package rowsy.learn; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; /** * 1.容器主要分为Collection和Map,Collection是一个坑一个元素,Map是一个坑一对元素(值和键) * * 2.泛型可以防止将不正确的类型放入容器中 * * 3.几种常用Set的区别 * HashSet:获取元素最快,存储方式复杂 * TreeSet:按比较结果的升序排列元素 * LinkedHashSet:按插入的顺序排列元素 * 对于几种Map,区别于Set一样,唯一的差别是LinkedHashMap保留了HashMap的查询速度 * * List的行为与equals()方法相关 * * 相对于Iterator,ListIterator可以双向移动,还可以从某个元素出开始,ListIterator只能用于List类型 * Collection都实现了iterator()方法 **/ class L1 { } class L11 extends L1 { } class L111 extends L11 { } class L112 extends L11 { } class L2 { } class L21 extends L2 { } class L22 extends L2 { } class Pet implements Comparable<Pet> { private int age; public Pet(int age) { this.age = age; } @Override public int compareTo(Pet pet) { if (this.age > pet.age) { return 1; } else if (this.age == pet.age) { return 0; } else { return -1; } } } public class LearnCollection { public static void main(String[] args) { List<String> list = Arrays.asList("ronnie", "john", "mark"); // 1.Arrays.asList()转化来的list不可以改变大小,因为底层是数组 // list.add("trump"); // list.remove(1); System.out.println(list); List<L1> listL = Arrays.asList(new L1(), new L111(), new L11()); // 2.Arrays.asList对他所产生的类型做最理想的假设,例如L111和L112可转化为L11和L1,但它并不这么认为 // 编译器会说cannot convert from List<L11> to List<L1> // listL = Arrays.asList(new L111(), new L112()); // 3.加上显示类型说明可以避免此类错误 listL = Arrays.<L1> asList(new L111(), new L112()); String[] names = { "ronnie", "john", "mark", "trump" }; // 证明几种Set中元素的排序方式是不同的 Set<String> hashSet = new HashSet<String>(); Set<String> linkedHashSet = new LinkedHashSet<String>(); Set<String> treeSet = new TreeSet<String>(); Collections.addAll(hashSet, names); Collections.addAll(linkedHashSet, names); Collections.addAll(treeSet, names); System.out.println(hashSet); System.out.println(linkedHashSet); System.out.println(treeSet); System.out.println("==============="); List<String> nameList = new ArrayList<>(Arrays.asList(names)); System.out.println(nameList); nameList.clear(); System.out.println(nameList); Pet pet1 = new Pet(12); Pet pet2 = new Pet(14); System.out.println((pet1.compareTo(pet2) > 0) ? "true" : "false"); } }
输入结果如下:
[ronnie, john, mark]
[john, mark, trump, ronnie]
[ronnie, john, mark, trump]
[john, mark, ronnie, trump]
===============
[ronnie, john, mark, trump]
[]
false