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 }