HasMap与TreeMap

	public static void main(String[] args) {
		
//		Map<String, Dog> map = new HashMap<String, Dog>();
		//改成TreeMap可以将打印出来的数据根据key值进行排序
		//TreeMap是一个按key排序的键值对集合,比较规则根据key的compareTo方法进行排序
		//List就是一个链表结构,set是不包含重复元素的集合,Map是key-values模式不包含重复元素的集合
		TreeMap<String, Dog> map = new TreeMap<String, Dog>();
		
		Dog d1 = new Dog("h1", 2);
		Dog d2 = new Dog("h2", 4);
		Dog d3 = new Dog("h3", 3);
		
		map.put("003", d1);
		map.put("002", d2);
		map.put("006", d2);
		map.put("005", d3);
		map.put("004", d1);
		//相对于List集合Map会根据key值把重复key的数据覆盖掉,所以这里不会put进d3这条数据
		map.put("002", d3);
		Set<String> keySet = map.keySet();

		for(Iterator<String> iter = keySet.iterator(); iter.hasNext();){
			String key = iter.next();
			Dog d = map.get(key);
			System.out.println(key+":"+"name:"+d.getName()+"age:"+d.getAge());
		}

	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HashMap和TreeMap都是Java中的Map接口的实现类。它们都可以用来存储键值对,并提供了快速的查找和检索功能。然而,它们在一些方面有一些区别。 首先,HashMap是基于哈希表的实现,它使用键的哈希值来存储和检索元素。它的插入、删除和定位元素的性能都非常高效,时间复杂度为O(1)。HashMap不保证元素的顺序,在遍历时无法保证元素的顺序。如果你只关心存储和检索的性能,并不关心元素的顺序,HashMap是更好的选择。 而TreeMap则是基于红黑树的实现,它能够对键进行排序并保持有序。TreeMap中的元素是按照键的自然顺序进行排序的,或者可以通过传入一个Comparator对象来指定排序规则。因此,如果你需要对一个有序的键集合进行遍历,或者需要得到一个有序的结果,TreeMap是更好的选择。但是由于它要维护树结构,插入、删除和定位元素的性能相对较低,时间复杂度为O(log n)。 总之,如果你需要快速的插入、删除和定位元素,并不关心元素的顺序,HashMap是最好的选择。而如果你需要对有序的键集合进行遍历,或者需要得到一个有序的结果,TreeMap是更好的选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [7月5日Java学习(HashMap)](https://blog.csdn.net/m0_51947717/article/details/125612608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值