Java 入门 之 集合 Collection

Collection 接口 

1.集合可以理解为一个动态的对象数组,集合中对象的内容可以任意扩充;

2.集合的特点是,性能高、易扩展和修改;

3.Collection常见子类为,List、Set 和 Queue。

List接口

1.List接口可以存放任意类型的数据,且数据内容可重复;
2.List 常见子类有 Vector和Arraylist
3.常见操作

是否为空 isEmpty();

对象索引 indexOf(Object obj);

List 是接口,接口不可实例化,可实例化的是接口的子类,即,通过对象的多态性实现。

package List_Pack;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

public class List_Class {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<String> list01 = null;
		list01 = new ArrayList<String>();
		list01.add("A");
		list01.add("A");
		list01.add("A");
		System.out.println(list01);
		System.out.println(list01.indexOf("A"));
		System.out.println(list01.isEmpty());
		System.out.println(list01.size()); // 返回元素数目
//		System.out.println(list01.length); // 报错
		for (int i = 0; i < list01.size(); i++) {
			System.out.println(list01.get(i));
		}
		List<String> list02 = null;
		list02 = new Vector<String>();
		list02.add("A");
		list02.add("B");
		list02.add("C");
		System.out.println(list02);
	}

}

代码输出:

[A, A, A]
0
false
3
A
A
A
[A, B, C]


比较 Arraylist Vector
性能 异步处理性能高 同步处理性能高
线程安全 非线程安全 线程安全

Set 接口

1.不能加入重复元素,可以实现元素排序;

2.常见的子类

散列存放:HashSet

有序存放:TreeSet

package Set_Pack;

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class Set_Class {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Set<String> set01 = null;
        set01 = new HashSet<String>();
        set01.add("C");
        set01.add("B");
        set01.add("A");
        System.out.println(set01);
        Set<String> set02 = null;
        set02 = new TreeSet<String>();
        set02.add("C");
        set02.add("B");
        set02.add("A");
        System.out.println(set02);
    }

}

代码输出

[A, B, C]
[A, B, C]


Iterator 接口

它是集合迭代输出的接口,迭代输出就是将元素一个一个的进行判断,根据是否含有内容选择输出。


代码示例

package Iterator_Pack;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Iterator_Class {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<String> list01 = new ArrayList<String>();
		list01.add("a");
		list01.add("b");
		list01.add("c");
		Iterator<String> iter = list01.iterator(); 
		while (iter.hasNext()) {
			// 习惯上 不要对 list01 采取 remove 操作
			String str = iter.next();
			if ("b".equals(str)) {
				iter.remove();
			}
			System.out.println(str);
		}
	}
}
注:

关于list和set接口中remove()方法的说明,不能直接 Collection.remove(),会报错的。


Map 接口

1.保存形式

Key-Value 方式保存。

2.常见子类

HashMap 无需存放,Key不重复

HashTable 无需存放,Key不重复

package Map_Pack;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Map_Class {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<String,String> map = new HashMap<String,String>();
		map.put("A","aaa");
		map.put("B","bbb");
		map.put("C","ccc");
		String str = map.get("A");
		System.out.println(str);
		// 判断键值是否存在
		if (map.containsKey("A")) {
			System.out.println("键 存在 !");
		}
		if (map.containsValue("bbb")) {
			System.out.println("值 存在!");
		}
		// 获取全部的键值 并打印输出
		Set<String> s = map.keySet();
		Iterator<String> iter01 = s.iterator();
		while (iter01.hasNext()) {
//			System.out.println(iter01.next());
			// 每次输出 全部键值 并不一一对应
//			Collection<String> col = iter01.next().values();
//			Iterator<String> iter02 = col.iterator();			
//			while (iter02.hasNext()) {
//				System.out.println(iter02.next());				
//			}
			// 注意 迭代器的更新,否则就会像下面代码一样,陷入一次输出的境况
//			iter01 = col.iterator();			
//			while (iter01.hasNext()) {
//				System.out.println(iter01.next());
//			}
			str = iter01.next();
			System.out.print(str);
			str = map.get(str);
			System.out.println(":"+str);
		}
	}

}
代码输出
aaa
键 存在 !
值 存在!
A:aaa
B:bbb
C:ccc




你可能感兴趣的:(list,set,map,Collection,iterator)