Arraylist 和 Vector 的区别?

Arraylist 与 LinkedList 区别?

补充内容:RandomAccess 接口

标志了实现RandomAcess这个接口的类具有随机访问功能

随机访问功能:可以直接访问众多数据中任意想要的那一个,例如:在1-10中,直接去查找任何一个数字的时间都是相同的

ArrayList 的扩容机制

通过源码一步一步分析 ArrayList 扩容机制


comparable 和 Comparator 的区别

comparable需要在类中重写compareTo方法
comparator在创建对象时通过匿名内部类的方式进行重写compare方法排序
image.png

comparator 定制排序

  1. package com.study_01;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. public class ComparatorArray {
  6. public static void main(String[] args) {
  7. ArrayList<Integer> arrayList = new ArrayList<Integer>();
  8. arrayList.add(-1);
  9. arrayList.add(3);
  10. arrayList.add(3);
  11. arrayList.add(-5);
  12. arrayList.add(7);
  13. arrayList.add(4);
  14. arrayList.add(-9);
  15. arrayList.add(-7);
  16. System.out.println("原始数组:");
  17. System.out.println(arrayList);
  18. // void reverse(List list) 反转
  19. // Collections 针对集合的工具类
  20. Collections.reverse(arrayList);
  21. System.out.println("Collections.reverse(arrayList:)");
  22. System.out.println(arrayList);
  23. // void sort(List list) 按自然排序的升序排序
  24. Collections.sort(arrayList);
  25. System.out.println("Collections.sort(arrayList):");
  26. System.out.println(arrayList);
  27. // 定制的用法,降序
  28. Collections.sort(arrayList, new Comparator<Integer>() {
  29. @Override
  30. public int compare(Integer o1, Integer o2) {
  31. // this , s
  32. return o2.compareTo(o1);
  33. }
  34. });
  35. System.out.println("定制排序后:");
  36. System.out.println(arrayList);
  37. }
  38. }
  1. 原始数组:
  2. [-1, 3, 3, -5, 7, 4, -9, -7]
  3. Collections.reverse(arrayList:)
  4. [-7, -9, 4, 7, -5, 3, 3, -1]
  5. Collections.sort(arrayList):
  6. [-9, -7, -5, -1, 3, 3, 4, 7]
  7. 定制排序后:
  8. [7, 4, 3, 3, -1, -5, -7, -9]

无序性和不可重复性的含义是什么

1、什么是无序性?无序性不等于随机性 ,无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值决定的。
2、什么是不可重复性?不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()方法和 HashCode()方法。

比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同

HashSet 是 Set 接口的主要实现类 ,HashSet 的底层是 HashMap,线程不安全的,可以存储 null 值;
LinkedHashSet 是 HashSet 的子类,能够按照添加的顺序遍历;
TreeSet 底层使用红黑树,能够按照添加元素的顺序进行遍历,排序的方式有自然排序和定制排序。

Queue 与 Deque 的区别

ArrayDeque 与 LinkedList 的区别

说一说 PriorityQueue


HashMap 和 Hashtable 的区别

HashMap 和 HashSet 区别

HashMap 和 TreeMap 区别

HashSet 如何检查重复

HashMap 的底层实现

HashMap 的长度为什么是 2 的幂次方

HashMap 多线程操作导致死循环问题

HashMap 有哪几种常见的遍历方式?

ConcurrentHashMap 和 Hashtable 的区别

ConcurrentHashMap 线程安全的具体实现方式/底层具体实现