1. List集合:1>extends Collection接口,有序的,有索引,允许有重复元素;防止索引越界异常;
2>方法:add(" "); //添加元素; add(3," "); //在制定索引添加元素;
remove(index); //移除集合中指定位置;
set(index," "); //将指定位置的内容替换成指定内容;
for(int i = 0; i<list.size() ;i++){ String s = list.get(i); }//for loop遍历集合;
while(it.hasNext()){String s = it.next();} // 迭代器;
for(String s : list){ } //增强for loop;
2. ArrayList集合:底层是一个数组;多线程,效率高;增删慢,查找快;
3. LinkedList集合:底层是一个链表;多线程,效率高;增删快,查找慢;
4. Set集合:extends Collection接口,无重复元素,无索引,不能使用带索引的方法,也不能for loop;
5. HashSet接口:1>哈希表结构,速度快,无顺序的,存储和取出元素的顺序可能不一致;
Set<Integer> set = new HashSet<>();
set.add();
Interator<Integer> it = set.iterator();
while(it.hasNext()){
Integer n = it.next();
} // 遍历的另一种方式:for ( Integer i : set ){ System.out.println(i); }
2>哈希值:十进制,系统随机给的逻辑地址值
3>哈希表:数组+链表/红黑树(提高查询的速度); 查询的速度快;
数组将元素进行分组,相同哈希值的分一组,链表/红黑树把相同的哈希值元素连到一起;
6.Set集合存储元素不重复:存储元素重写HashCode和equals方法保证无重复;
7.HashSet存储自定义类型元素:存储元素重写HashCode和equals方法保证无重复;
8.LinkedHashSet集合:有序的,不允许重复的链表;
9.可变参数:方法的参数列表数据类型已确定,参数个数不确定,可以使用可变参数;
底层是一个数组,根据传递参数个数不同,创建不同长度数组,存储这些参数传递的参数个数;
PS:一个方法的参数列表,只有一个可变参数;如果方法的参数有多个,可变参数必须卸载参数列表末尾;
10.addAll&shuffle:Collection.addAll(list,"a","b","c"); // 向集合中添加多个元素;
Collection.shuffle(list); // 打乱集合中元素顺序;
11.sort(List):Collections.sort(list01); // 默认升序排列集合;
被排序的集合里存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序的规则;
Comparable接口的排序规则:自己(this)- 参数:升序;
12.sort(List,Comparator):Comparable接口的排序规则:o1- o2;
int result = o1.getAge() - o2.getAge();
if(result == 0){
result = o1.getName().charAt(0) - o2.getName().charAt(0);
} return result; //组合排序;