一.
1. 数组具有固定的大小;
2. 容器类是List,set,Queue,Map,都可以自动调整自己的尺寸;
3. 不用泛型
import java.util.ArrayList;
public class CollectionDemo_00 {
public static void main(String[] args) {
ArrayList apples = new ArrayList();
for(int i = 0; i < 3; i++) {
apples.add(new Apple());
}
apples.add(new Orange()); //apples保存的是Object对象
for(int i = 0; i < apples.size(); i++) {
System.out.println(((Apple)apples.get(i)).id()); //Orange对象不能转换为Apple对象,类型转换异常
}
}
}
class Apple {
private static long counter;
private final long id = counter++;
public long id() {
return id;
}
}
class Orange {}
出现异常
4. 使用泛型可以在编译期防止将错误类型的对象放到容器中
import java.util.ArrayList;
public class CollectionDemo_02 {
public static void main(String[] args) {
ArrayList<Apple> apples = new ArrayList<Apple>();
for(int i = 0; i < 3; i++) {
apples.add(new Apple());
}
for(Apple apple : apples) {
System.out.println(apple.id()); //因为List知道它保存的是什么类型,调用get()时会替你执行转型
}
}
}
5. 可以将Apple的子类型添加到指定为保存Apple的对象容器中
import java.util.ArrayList;
public class CollectionDemo_04 {
public static void main(String[] args) {
ArrayList<Apple> apples = new ArrayList<Apple>();
for(int i = 0; i < 3; i++) {
apples.add(new Apple());
}
apples.add(new Fushi());
for(Apple apple : apples) {
System.out.println(apple);
}
}
}
class Fushi extends Apple {}
二.添加一组元素
1. 示例
public class CollectionDemo_04 {
public static void main(String[] args) {
Collection<Integer> collection = new ArrayList<Integer>();
Integer[] moreInts = {1, 2, 3, 4};
collection.addAll(Arrays.asList(moreInts));
Collections.addAll(collection, 5, 6, 7, 8);
for(Integer i : collection) {
System.out.println(i);
}
System.out.println("=================================");
List<Integer> list = Arrays.asList(moreInts); //底层表示的是数组,因此不能调整尺寸
//list.add(9); add()或delete()都是不允许的,抛出不支持异常
list.set(0, 10);
for(Integer i : list) {
System.out.println(i);
}
}
}
三. 容器的打印
- List:一特定顺序保存一组元素。 Set:元素不能重复。Queue:只允许容器的一端插入对象,另一端移除对象。Map:保存两个对象,即键和与之关联的值。
- HashSet,TreeSet,LinkedHashSet都是Set类型,HashSet是最快得获取元素方式,TreeSet是有存储顺序的,按照比较结果的升序保存对象,LinkedHashSet按照添加的顺序保存对象。
- Map有HashMap,TreeMap,LinkedHashMap,HashMap最快的查找技术,TreeMap按照比较结果的升序保存键,LinkedHashMap按照插入顺序保存键,同时保留了HashMap的查询速度。