-
ArrayList中,根据索引来操作集合的方法:
-
public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
-
public E get(int index) :返回集合中指定位置的元素。
-
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
-
public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
-
-
ArrayList增删慢的原因是:每增加一个元素,都会在创建一个长度+1的新数组,然后调用Systems.arraycopy方法复制
-
LinkedList中提供了大量的首尾操作的方法:
-
public void addFirst(E e) :将指定元素插入此列表的开头。
-
public void addLast(E e) :将指定元素添加到此列表的结尾。
-
public E getFirst() :返回此列表的第一个元素。
-
public E getLast() :返回此列表的最后一个元素。
-
public E removeFirst() :移除并返回此列表的第一个元素。
-
public E removeLast() :移除并返回此列表的最后一个元素。
-
public E pop() :从此列表所表示的堆栈处弹出一个元素。
-
public void push(E e) :将元素推入此列表所表示的堆栈。
-
public boolean isEmpty() :如果列表不包含元素,则返回true。
-
-
Set集合没有带索引的方法
-
哈希值:是由系统随机给出的一个十进制地址值,可调用 hashCode() 方法获取
-
哈希表:由 数组 + 链表 + 红黑树 组成
-
哈希值相同的数据会被分到同一个组
-
同一组的数据使用链表相连接
-
当同一组的数据数量超过8时,将链表转换为红黑树存储
-
-
-
存储流程:
-
-
HashSet集合存储自定义数据类型需要重写hashCode() 和 equals() 方法
-
LinkedHashSet:
-
为HashSet的一个子类
-
底层为:哈希表 (数组+链表+红黑树)+ 链表
-
多出来的链表是用来记录存储的顺序
-
-
可变参数:
-
当方法的参数列表数据类型已经确定,参数的个数不确定,可以使用可变参数
-
底层使用数组实现
-
传递参数的个数 >= 0
-
格式:
-
private static void demo03() {
-
System.out.println(add());
-
System.out.println(add(1,2,3));
-
}
-
-
-
private static int add(int... a) {
-
int sum = 0;
-
for (int i : a) {
-
sum += i;
-
}
-
return sum;
-
}
-
-
-
Collections.sort():被排序的数据类型必须实现comparable接口
-
Comparator:比较器(比较规则),使用比较器之后就可以不用再实现Comparable接口
-
格式:
-
Collections.sort(list, new Comparator<Student>() {
-
@Override
-
public int compare(Student o1, Student o2) {
-
// 年龄降序
-
int result = o2.getAge()‐o1.getAge();//年龄降序
-
if(result==0){//第一个规则判断完了 下一个规则 姓名的首字母 升序
-
result = o1.getName().charAt(0)‐o2.getName().charAt(0);
-
}
-
return result;
-
}
-
});
-
-