Java集合框架


参考:https://docs.oracle.com/javase/8/docs/api/index.html

1 继承关系图

image-20210729114627296

2 常用函数总结

栈和队列

栈的两种实现形式

Deque<Integer> queue = new LinkedList<Integer>(); // 推荐
Stack<Integer> queue2 = new Stack<Integer>();
  • E push(E item)

java.util.Stack中,加入尾部

java.util.LinkedList中(接口Deque中规定),加入头部

  • boolean add(E e)

加入尾部,两种方法均可使用,java.util.Collection中规定

  • E pop()

java.util.Stack中,弹出尾部

java.util.LinkedList中(接口Deque中规定),弹出头部

  • E get(int index)

由于Deque接口中没有get方法(Deque继承自Queue),故使用LinkedList时无法用get

Stack继承自Vector->List,故使用Stack时可以用get

  • E poll()

java.util.LinkedList中(接口Deque中规定),弹出头部,同pop

java.util.Stack中无法使用

  • E peek()

java.util.Stack中,返回尾部

java.util.LinkedList中(接口Deque中规定),返回头部

Map

  • V put(K key, V value)

Queue

  • boolean offer(E e)

Size & Length

  • int size()

java.util.Collection中的一个方法

  • length

任何数组的属性

  • int length()

java.lang.String的一个方法

String & StringBuffer

  • void setCharAt(int index, char ch)

StringBuffer中的一个方法,String无法使用

Integer 和 String

Integer a = Integer.valueOf("124");
String str = String.valueOf(123);

equals和==的区别

  • == 比较的是**变量(栈)内存中存放的对象的(堆)内存地址,**用来判断两个对象的地址是否相同,即是否是指相同一个对象
  • equals用来比较的是两个对象的内容是否相等

Arrays.sort自定义

sort默认为升序

几种降序定义

Integer[] arr = {5,4,7,9,2,12,54,21,1};
// Method 1
Arrays.sort(arr, new Comparator<Integer>() {
            public int compare(Integer a, Integer b) {
                return b-a;
            }
        });

// Method 2
Arrays.sort(arr, (a, b) -> {
            return b-a;
        });

// Method 3
Arrays.sort(arr, (a, b) -> (b-a));

// Method 4
Arrays.sort(arr, (a, b) -> b.compareTo(a));

PriorityQueue自定义

Queue<Integer> A = new PriorityQueue<>((x, y) -> (y - x)); // 大顶堆