Java学习笔记---集合(二)Map

         Java为数据结构中的映射定义了一个接口java.util.Map,它有HashTable、HashMap、WeakHashMap、LinkedHashMap以及TreeMap等实现类。

          使用映射的技术要点如下:    

              HashMap是一个最常用的Map,它根据键的hashCode值存入数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap是无序的,则由iterator迭代出来的值是无序排列。HashMap最多只允许一条记录的键为null,多插入空键记录,数据会出现问题;允许多条记录的值为null;HashMap不支持线程的同步。如果需要同步,可以用Collections的synchronized方法使HashMap具有同步能力;

  HashTable实现一个映射,所有的键值必须非空,为了能高效地工作,定义键的类必须实现hashCode()方法和equals()方法。HashTable是无序的,但是运用迭代默认以倒序输出元素。HashTable支持线程同步,即任一时刻只能有一个线程能写hashtable,因此导致HashTable在写入时会比较慢;

             TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用迭代器Iterator遍历TreeMap时,得到的记录是排过序的。

          该次笔记只是简单介绍一下映射类HashTable、HashMap和TreeMap,并对各映射类进行比较。

源代码:

package corejava;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
/**
 * 
 * 测试Map
 * **/
public class TestMap {
	public static void showHashMap(){
		Map<String, String> hashMap=new HashMap<String, String>();
		hashMap.put("001", "藻类植物");
		hashMap.put("002", "菌类植物");
		hashMap.put("003", "地衣类植物");
		hashMap.put("004", "蕨类植物");
		hashMap.put("005", "种子植物");
		hashMap.put("006", null);//HashMap中允许多个value值为空
		hashMap.put(null, "苔藓植物");//HashMap只允许一个key为空,否则
		Iterator<String> it=hashMap.keySet().iterator();//把hashMap的key值集合放到迭代器里,获得key值集合的迭代器
		System.out.println("1.操作HashMap显示植物种类");
		while(it.hasNext()){
			Object key=it.next();//获取每个键KEY值
			System.out.print(hashMap.get(key)+"\t");
		}
		System.out.println("");
	}
	public static void showHashtable(){
		Hashtable<String, String> hashTable=new Hashtable<String, String>();
		hashTable.put("001", "藻类植物");
		hashTable.put("002", "菌类植物");
		hashTable.put("003", "地衣类植物");
		hashTable.put("004", "蕨类植物");
		hashTable.put("005", "种子植物");
		Iterator<String> it=hashTable.keySet().iterator();//把hashTable的key值集合放到迭代器里,获得key值集合的迭代器
		System.out.println("2.操作hashTable显示植物种类");
		while(it.hasNext()){;
			Object key=it.next();//获取每个键KEY值
			System.out.print(hashTable.get(key)+"\t");
		}
		System.out.println("");
	}
	public static void showTreeMap(){
		TreeMap<String, String> treeMap=new TreeMap<String, String>();
		treeMap.put("001", "藻类植物");
		treeMap.put("002", "菌类植物");
		treeMap.put("003", "地衣类植物");
		treeMap.put("004", "蕨类植物");
		treeMap.put("005", "种子植物");
		treeMap.put("006", null);//treeMap中允许value值为空
		treeMap.put("007", null);
		Iterator<String> it=treeMap.keySet().iterator();//把treeMap的key值集合放到迭代器里,获得key值集合的迭代器
		System.out.println("3.操作treeMap显示植物种类");
		while(it.hasNext()){;
			Object key=it.next();//获取每个键KEY值
			System.out.print(treeMap.get(key)+"\t");
		}
		System.out.println("");
	}
	public static void showArrayList()
	{
		ArrayList<String> arraylist=new ArrayList<String>();
		arraylist.add("001藻类植物");
		arraylist.add("003地衣类植物");
		arraylist.add("006苔藓植物");
		arraylist.add("004蕨类植物");
		arraylist.add("005种子植物");
		arraylist.add("002菌类植物");
		System.out.println("4.排序前植物种类");
		for (int i = 0; i < arraylist.size(); i++) {
			System.out.print(arraylist.get(i)+"\t");
		}
		System.out.println();
        Collections.sort(arraylist);//对列表集合进行排序
		System.out.println("5.排序后植物种类");
		for (int i = 0; i < arraylist.size(); i++) {
			System.out.print(arraylist.get(i)+"\t");
		}
		System.out.println();
        }
public static void main(String[] args) {
	showHashMap();//操作HashMap显示植物种类
	showHashtable();
	showTreeMap();
	showArrayList();//再次加入arraylist是与Map类做个比较
}
}


你可能感兴趣的:(map,映射)