JAVA编程思想学习笔记(十)持有对象

持有对象

java实用类库提供了一套相当完整的容器类,其中基本的类型时List、Set、Queue和Map。这些对象类型称为集合类,也可以称之为容器

泛型和类型安全的容器

ArrayList是最基本最可靠的容器,你可以把它当做“可以自动扩充自身尺寸的数组”来看待。
下面是一个简单的例子:

class Apple{
	private static long counter;
	private final long id = counter++;
	public long id(){return id;}
}

public class Fruts {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList apples = new ArrayList();
		for(int i=0;i<3;i++){
			apples.add(new Apple());
		}
		for(int i=0;i

上面这种方式需要强制转型,下面使用泛型的例子:

class Apple{
	private static long counter;
	private final long id = counter++;
	public long id(){return id;}
}

public class Fruts {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList apples = new ArrayList();
		for(int i=0;i<3;i++){
			apples.add(new Apple());
		}
		for(int i=0;i

基本概念

基本上可以分为两种类型:
Collection类型:一个独立元素序列,这些元素都服从一条或多条规则。

  1. List:必须按照插入的顺序保存元素。
  2. Set:不能有重复的元素。
  3. Queue:按照排队规则来确定对象产生的顺序。

Map类型:一组成对的“键值对”对象,允许用“键”来查找“值”。

添加一组元素

java.util包中的Arrays和Collections类中都有很多实用方法,可以在一个Collection 中添加一组元素,注意类名中的s
下面就是添加的例子:

public class AddingGroups {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Collection collections = new ArrayList(Arrays.asList(1,2,3,4,5));
		Integer[] moreints = {6,7,8,9,10};
		collections.addAll(Arrays.asList(moreints));
		Collections.addAll(collections,11,12,13,14,15);
		Collections.addAll(collections,moreints);
		List list = Arrays.asList(16,17,18,19,20);
		list.set(1, 99);
		
		System.out.println(collections);
		System.out.println(list);
		
	}

}

容器的打印

下面例子将容器的内容打印出来,便于观察容器的存储方式:

public class PrintCollection {
	static Collection fill(Collection collection){
		collection.add("A");
		collection.add("B");
		collection.add("C");
		collection.add("C");
		return collection;
	}
	
	static Map fill(Map map){
		map.put("A", "1");
		map.put("B", "2");
		map.put("C", "3");
		map.put("C", "4");
		return map;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(fill(new ArrayList()));
		System.out.println(fill(new LinkedList()));
		System.out.println(fill(new HashSet()));
		System.out.println(fill(new TreeSet()));
		System.out.println(fill(new HashMap()));
		System.out.println(fill(new TreeMap()));
		System.out.println(fill(new LinkedHashMap()));
	}

}

运行结果:

[A, B, C, C]
[A, B, C, C]
[A, B, C]
[A, B, C]
{A=1, B=2, C=4}
{A=1, B=2, C=4}
{A=1, B=2, C=4}

对于这个结果可以看出,Set类型,元素不能重复;Map类型,对于每个键,只存储一次;

你可能感兴趣的:(学习笔记)