现在的位置: 首页 > 综合 > 正文

Java容器基础

2018年02月05日 ⁄ 综合 ⁄ 共 1940字 ⁄ 字号 评论关闭

一.

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);
		}
		
	}

}

三. 容器的打印

  1. List:一特定顺序保存一组元素。 Set:元素不能重复。Queue:只允许容器的一端插入对象,另一端移除对象。Map:保存两个对象,即键和与之关联的值。
  2. HashSet,TreeSet,LinkedHashSet都是Set类型,HashSet是最快得获取元素方式,TreeSet是有存储顺序的,按照比较结果的升序保存对象,LinkedHashSet按照添加的顺序保存对象。
  3. Map有HashMap,TreeMap,LinkedHashMap,HashMap最快的查找技术,TreeMap按照比较结果的升序保存键,LinkedHashMap按照插入顺序保存键,同时保留了HashMap的查询速度。

抱歉!评论已关闭.