HashMap是Map里的一个实现类
底层是哈希表结构的
依赖hashcode方法和equals方法保证键的唯一
如果键存储的是自定义对象,需要重写这两个方法
如果值存储自定义对象不需要重写
LinkedHashMap
由键决定:有序,不重复,无索引
存取顺序一致
底层数据结构是哈希表,知识每个键值对元素又额外多了一个双链表来记录存储的顺序
TreeMap
跟Treeset底层一样,都是红黑树
不重复,无索引,可排序
排序规则
实现Comparable接口,指定规则
创建集合是传递比较器对象
可变参数
格式:属性类型...名字
int...args
/* * 假设需要定会一一个方法,可以计算n个数的和 * * */ System.out.println(getSum(1, 2, 3, 4)); } /* * 底层 * 可变参数底层是一个数组 * * */ public static int getSum(int... args) { // System.out.println(args); int sum = 0; for (int i : args) { sum += i; } return sum; } }
可变参数的细节
public static void main(String[] args) { //可变参数的小细节 //1.在方法的形参中最多只能写一个可变参数 //可变参数有多少吃多少 //2.在方法中,如果出现了可变参数以外的参数,可变参数要放最后 } public static int getSum(int a,int...args){ return 0; } }
Collections
是集合的工具类
public static <T> boolean addAll(Collection<T> c,T...elements) 批量添加元素
public static void shuffle(List<?> list ) 打乱集合元素的顺序
创建不可变集合
<>.of
/* * 创建不可变集合 * */ List<String> list = List.of("1", "2"); list.add("a"); System.out.println(list);
获取不可变Set集合时,必须保证键的唯一性
Map集合参数是有上线的,只能存10个键值对,如果要传递多个键值对对象,可以把键跟值看成一个整体,传递进去
超过十个可以用copyof方法