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

来源:互联网 发布:淘宝上哪家小叶紫檀好 编辑:程序博客网 时间:2024/06/16 09:05

         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类做个比较}}


0 0
原创粉丝点击