一.
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的查询速度。