day07-Collection集合的其他相关知识
可变参数
可变参数在方法内部本质就是一个数组

public static void test(int... intArr){
int length = intArr.length;//数组的length属性
}
注意:可变参数只能在形参列表中出现一个,且必须放在形参列表最后
Collections工具类
用来操作单列集合

Collections只能支持对List集合进行排序

day07-Map集合
LomBok
用30版本
@Data 注解包含了 无参构造器 + set + get + toString + hashCode + equals
如果使用了@AllArgsConstructor,就要手动加上@NoArgsConstructor
Map集合
Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要key数据,不要value数据而已。
Map集合是键值对集合

后面重复的键会覆盖前面的值
Map集合常用方法

注意:如果 key 已存在,Map.put(key, value) 会覆盖原有的值(value),并返回原值(old value)。
遍历方式(三种)

键找值

public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("aa",1);
map.put("bb",2);
map.put("cc",3);
Set<String> keySet = map.keySet();
//这里可以采用遍历collection的三种方式的任何一种(迭代器,增强for,Lambda)
for (String i1 : keySet) {
Integer value = map.get(i1);
System.out.println(value);
}
}
键值对(entrySet)


public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put("aa",1);
map.put("bb",2);
map.put("cc",3);
//转成set集合。将每一对key和value封装成一个对象
Set<Map.Entry<String, Integer>> entries = map.entrySet();
//这里可以采用遍历collection的三种方式的任何一种(迭代器,增强for,Lambda)
for (Map.Entry<String, Integer> entry : entries) {
System.out.println(entry.getKey()+ " " +entry.getValue());
}
}
Lambda(forEach方法)

public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("aa",1);
map.put("bb",2);
map.put("cc",3);
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String s, Integer integer) {
System.out.println(s+" "+integer);
}
});
}
Map类的forEach方法源码如下(基于entrySet遍历):

HashMap
基于哈希表实现。


LinkedHashMap
有序(插入顺序就是遍历顺序),不重复,无索引

TreeMap


集合的嵌套
Map<String,List<String>> map = new HashMap<>();

被折叠的 条评论
为什么被折叠?



