1 package test;
2
3 import java.util.ArrayList;
4 import java.util.Comparator;
5 import java.util.LinkedList;
6 import java.util.List;
7 import java.util.Stack;
8 import java.util.Vector;
9
10 public class Collections {
11 public static void main(String[] args) {
12 /*List
13 * ArrayList - 顺序表
14 * 1.底层是通过数组实现的
15 * 2.初始容量为10
16 * 3.在扩容的时候,每次在当前容量的基础上,增加一半,基于右移
17 * 4.线程不安全
18 * 5.插入和删除元素相对复杂,查询简单 --查询易,增删难
19 *
20 * */
21 List<String> L1= new ArrayList<>();
22 L1.add("你好");
23 L1.add("中国");
24 L1.add("北京");
25 System.out.println(L1);
26 /*
27 * List
28 * LinkedList - 链表
29 * 1.底层通过节点来存储数据,当添加数据的时候,会定义一个新的节点来存储数据
30 * 2.节点之间通过地址的引用的方式相互关联
31 * 3.线程不安全
32 * 4.增删易,查询难。
33 *
34 * */
35 List<String> L2=new LinkedList<>();
36 L2.add("落花雨");
37 L2.add("你飘扬在天际");
38 System.out.println(L2);
39 /* Comparator -比较器
40 * 1.重写compare 方法,在这个方法中制定比较规则
41 * 2.在排序的时候根据compare方法返回值的正负来确定排序顺序
42 * 例子:
43 * 根据字符串的首字母进行排序
44 * 根据首字母进行降序排序:首字母相同,则位置不发生变化
45 * */
46 L1.sort(new Comparator<String>() {
47 //比较规则就是写在这个方法里
48 //根据compare方法的返回值进行排序
49 //如果返回的是一个正数,那么认为o1<o2,从而将o1排到o2的后面
50 //如果返回的是一个正数,那么认为o1>o2,从而将o1排到o2的前面
51 @Override
52 public int compare(String o1, String o2) {
53 // TODO Auto-generated method stub
54 return o2.charAt(0)-o1.charAt(0);
55 }
56 });
57
58 /* Vector - 向量
59 * 1.是java最早的集合
60 * 2.底层依然是依靠数组来存储元素
61 * 3.底层数组默认初始容量是10
62 * 4.如果不指定容量增量,那么每次扩容都是加上当前的长度,从而使数组的大小变为了原来的二倍 --- 三元
63 * 5.线程安全
64 * */
65 List<String> L3 = new Vector<>();
66 L3.add("花香依");
67 L3.add("把往事情勾起");
68 System.out.println(L3);
69 /* Stack - 栈
70 * 1.是Vector的子类
71 * 2.满足后进先出(LIFO)的原则
72 * 3.栈顶元素:最后放入栈中的元素
73 * 4.栈底元素:最先放入栈中的元素
74 * 5.入栈\压栈:将元素放入栈中
75 * 6.出栈\弹栈:将元素从栈取出
76 * */
77 Stack<String> L4 = new Stack<>();
78 L4.push("我愿意");
79 L4.push("将浮萍躺湖心");
80 System.out.println(L4.peek());
81 System.out.println(L4);
82 /*
83 * Queue - 队列
84 * 1.遵循先进先出的原则(FIFO)
85 * 2.队头元素:最先放入队列中的元素
86 * 3.队尾元素:最后放入队列中的元素
87 * 4.Deque:双向队列
88 * */
89 }
90 }