Map、可变参数

文章详细介绍了Java集合框架中Map与Collection的区别,Map中的元素成对存在,由键值对构成,不允许重复的键。HashMap是基于哈希表的Map实现,而Properties集合用于存储字符串键值对,且与IO流结合使用。TreeMap基于红黑树,支持按自然顺序或自定义比较器排序。此外,文章还提到了可变参数在Java中的应用。
摘要由CSDN通过智能技术生成

Map集合与Collection集合存储数据形式的区别:

  • Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。

  • Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

  • Collection中的集合称为单列集合,Map中的集合称为双列集合。

  • 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

Map接口中的常用方法

  • public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。

  • public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。

  • public V get(Object key) 根据指定的键,在Map集合中获取对应的值。

  • public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。

  • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

  • public boolean containKey(Object key):判断该集合中是否有此键。

  • public Collection<V> values() 返回Map集合中的所有值到Collection集合。

 注意:使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中; 若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。

Map集合遍历

方式1:键找值方式

 keySet();得到Map集合中所有的键

get(Object key):通过指定的键,从map集合中找对应的值

方式2:键值对方式

通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

  • public K getKey():获取Entry对象中的键。

  • public V getValue():获取Entry对象中的值

HashMap集合

Map接口实现类HashMap类特点:

  • 底层哈希表结构。

  • 不允许重复键。

    • 用作键的对象,应该重写hashCode()方法和equals()方法。

  • 此集合可以使用null值和null键

  • 线程不安全,运行速度快。

Properties集合

Properties集合特点:

  • 继承Hashtable,底层数据结构是哈希表。

  • 线程安全,运行速度慢。

  • 不允许null值,null键。

  • 此集合存储键值对数据类型固定为String。

  • 可以和IO流结合使用,从流中加载数据。

Properties集合特有方法:

  • Object setPropery(String key,String value),向集合中存储键值对。

  • String getProperty(String key),获取集合中键对应的值,无此键返回null。

  • Set<String> stringPropertyNames(),集合中的所有键存储到Set集合。

  • void load(输入流对象)

public static void main(String[] args){
    Properties properties = new Properties();
    //存储键值对
    properties.setProperty("k1","v1");
    properties.setProperty("k2","v2");
    System.out.println(properties);
    //所有的键存储到Set集合
    Set<String> set = properties.stringPropertyNames();
    for(String key : set){
    	System.out.println(key+"=="+properties.getProperty(key));
    }
}

TreeMap集合

  TreeMap集合基于红黑树实现,该映射根据其键的[自然顺序]进行排序,或者根据创建映射时提供Comparator

  • public Map.Entry<K,V> ceilingEntry(K key): 返回一个键-值映射关系,它与大于等于给定键的最小键关联;如果不存在这样的键,则返回 null。

  • public K ceilingKey(K key): 返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。

  • public Map.Entry<K,V> firstEntry() 返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。

  • public Map.Entry<K,V> lastEntry(): 返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。

  • public K firstKey(): 返回此映射中当前第一个(最低)键。

  • public K lastKey():返回映射中当前最后一个(最高)键。

可变参数 

 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化.

格式:   修饰符 返回值类型 方法名(参数类型... 形参名){  } 

public static void main(String[] args) {
    int sum = getSum(6, 7, 2, 12, 2121);
    System.out.println(sum);
}
public static int getSum(int... arr) {
    int sum = 0;
    for (int a : arr) {
    	sum += a;
    }
    return sum;
}

注意:

  • 可变参数的本质是数组。

    • 不传递参数,数组的长度是0.

    • 传递几个参数,数组的长度就是几。

  • 一个方法中只能有一个可变参数。

  • 如果方法中有多个参数,可变参数只能写在最后一位。

可变参数应用:

 public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素

public static void main(String[] args) {
      ArrayList<Integer> list = new ArrayList<Integer>();
      //采用工具类 完成 往集合中添加元素  
      Collections.addAll(list, 5, 222, 1,2);
      System.out.println(list);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值