1. ArrayList中,根据索引来操作集合的方法:

    1. public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。

    2. public E get(int index) :返回集合中指定位置的元素。

    3. public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。

    4. public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

  2. ArrayList增删慢的原因是:每增加一个元素,都会在创建一个长度+1的新数组,然后调用Systems.arraycopy方法复制

  3. LinkedList中提供了大量的首尾操作的方法:

    1. public void addFirst(E e) :将指定元素插入此列表的开头。

    2. public void addLast(E e) :将指定元素添加到此列表的结尾。

    3. public E getFirst() :返回此列表的第一个元素。

    4. public E getLast() :返回此列表的最后一个元素。

    5. public E removeFirst() :移除并返回此列表的第一个元素。

    6. public E removeLast() :移除并返回此列表的最后一个元素。

    7. public E pop() :从此列表所表示的堆栈处弹出一个元素。

    8. public void push(E e) :将元素推入此列表所表示的堆栈。

    9. public boolean isEmpty() :如果列表不包含元素,则返回true。


  1. Set集合没有带索引的方法

  2. 哈希值:是由系统随机给出的一个十进制地址值,可调用 hashCode() 方法获取

  3. 哈希表:由 数组 + 链表 + 红黑树 组成

    • 哈希值相同的数据会被分到同一个组

    • 同一组的数据使用链表相连接

    • 当同一组的数据数量超过8时,将链表转换为红黑树存储

    • 03 List、Set、数据结构、Collections

  4. 存储流程:

    • 03 List、Set、数据结构、Collections

  5. HashSet集合存储自定义数据类型需要重写hashCode() 和 equals() 方法

  6. LinkedHashSet:

    1. 为HashSet的一个子类

    2. 底层为:哈希表 (数组+链表+红黑树)+ 链表

    3. 多出来的链表是用来记录存储的顺序

  7. 可变参数:

    1. 当方法的参数列表数据类型已经确定,参数的个数不确定,可以使用可变参数

    2. 底层使用数组实现

    3. 传递参数的个数 >= 0

    4. 格式:

      1. private static void demo03() {

      2.     System.out.println(add());

      3.     System.out.println(add(1,2,3));

      4. }

      1. private static int add(int... a) {

      2.     int sum = 0;

      3.     for (int i : a) {

      4.         sum += i;

      5.     }

      6.     return sum;

      7. }


  1. Collections.sort():被排序的数据类型必须实现comparable接口

  2. Comparator:比较器(比较规则),使用比较器之后就可以不用再实现Comparable接口

    • 格式:

      1. Collections.sort(list, new Comparator<Student>() {

      2.         @Override

      3.         public int compare(Student o1, Student o2) {

      4.                 // 年龄降序

      5.                 int result = o2.getAge()‐o1.getAge();//年龄降序

      6.                 if(result==0){//第一个规则判断完了 下一个规则 姓名的首字母 升序

      7.                        result = o1.getName().charAt(0)‐o2.getName().charAt(0);

      8.                 }

      9.                 return result;

      10.         }

      11.  });

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-06-08
  • 2021-11-25
  • 2021-12-20
猜你喜欢
  • 2021-09-23
  • 2021-07-23
  • 2021-11-16
  • 2021-10-13
  • 2022-12-23
  • 2021-09-14
  • 2021-12-02
相关资源
相似解决方案