[java]
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; www.zzzyk.com
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