Java中HashMap和TreeMap的顺序问题

本文通过实例演示了HashMap与TreeMap两种数据结构在Java中的使用区别。HashMap存储无序键值对,而TreeMap则自动对键进行排序。示例展示了插入、遍历及删除操作后的不同表现。

HashMap和TreeMap是实现了Map接口的两个类,前者为无序的Map,后者为有序的Map。下面通过程序来看这种有序和无序的区别。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;


public class MapTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<String,String> hm = new HashMap<String,String>();
		Map<String,String> tm = new TreeMap<String,String>();
		//初始化数据
		for(int i=0;i<5;i++){
			hm.put("key"+i, "Value"+i);
			tm.put("key"+i, "Value"+i);
		}
		
		hm.put("cc", "其他键值对cc");
		hm.put("ee", "其他键值对ee");
		hm.put("aa", "其他键值对aa");
		
		tm.put("cc", "其他键值对cc");
		tm.put("ee", "其他键值对ee");
		tm.put("aa", "其他键值对aa");
		
		Iterator<?> it_hm = hm.entrySet().iterator();
		Iterator<?> it_tm = tm.entrySet().iterator();
		
		System.out.println("\n=======遍历输出HashMap的内容=======\n");
		while(it_hm.hasNext()){
			Entry<?, ?> obj = (Entry<?, ?>)it_hm.next();
			System.out.println(obj.getKey()+" "+obj.getValue());
		}
		System.out.println("\n=======遍历输出TreeMap的内容=======\n");
		while(it_tm.hasNext()){
			Entry<?, ?> obj = (Entry<?, ?>)it_tm.next();
			System.out.println(obj.getKey()+" "+obj.getValue());
		}
		
		hm.remove("cc");
		tm.remove("cc");
		it_hm = hm.entrySet().iterator();
		it_tm = tm.entrySet().iterator();
		
		System.out.println("\n=======删除后遍历输出HashMap的内容=======\n");
		while(it_hm.hasNext()){
			Entry<?, ?> obj = (Entry<?, ?>)it_hm.next();
			System.out.println(obj.getKey()+" "+obj.getValue());
		}
		System.out.println("\n=======删除后遍历输出TreeMap的内容=======\n");
		while(it_tm.hasNext()){
			Entry<?, ?> obj = (Entry<?, ?>)it_tm.next();
			System.out.println(obj.getKey()+" "+obj.getValue());
		}		
		
	}
	
	

}

运行结果:



=======遍历输出HashMap的内容=======


key4 Value4
key3 Value3
ee 其他键值对ee
key0 Value0
key2 Value2
key1 Value1
aa 其他键值对aa
cc 其他键值对cc


=======遍历输出TreeMap的内容=======


aa 其他键值对aa
cc 其他键值对cc
ee 其他键值对ee
key0 Value0
key1 Value1
key2 Value2
key3 Value3
key4 Value4


=======删除后遍历输出HashMap的内容=======


key4 Value4
key3 Value3
ee 其他键值对ee
key0 Value0
key2 Value2
key1 Value1
aa 其他键值对aa


=======删除后遍历输出TreeMap的内容=======


aa 其他键值对aa
ee 其他键值对ee
key0 Value0
key1 Value1
key2 Value2
key3 Value3
key4 Value4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值