Java:选择正确的集合

这是在应用程序中选择Set , List或Map的正确实现的快速指南。

最好的通用或“主要”实现可能是ArrayList,LinkedHashMap和LinkedHashSet。 它们的整体性能更好,除非您需要其他实现提供的特殊功能,否则应使用它们。 该特殊功能通常是排序或排序。

在这里,“排序”是指迭代器返回的项目的顺序,“排序”是指根据Comparable或Comparator对项目进行排序。

接口 有重复吗? 实作 历史的
没有 哈希集 LinkedHashSet * 树集
清单 ArrayList * 链表 向量 , 堆栈
地图 没有重复的键 哈希图 LinkedHashMap * 树状图 哈希表 , 属性

非主要实现的主要特征:

  • HashMap的性能比LinkedHashMap略好
  • HashSet的性能比LinkedHashSet略好
  • TreeSet已排序和排序,但速度较慢
  • TreeMap已排序和排序,但速度较慢
  • LinkedList可以快速添加到列表的开头,并且可以通过迭代从内部快速删除

以上实现的迭代顺序:

  • HashSet – 未定义
  • HashMap – 未定义
  • LinkedHashSet –插入顺序
  • LinkedHashMap –键的插入顺序(默认情况下)或“访问顺序”
  • ArrayList –插入顺序
  • LinkedList –插入顺序
  • TreeSet –按可比/比较器的升序
  • TreeMap –根据可比/比较器,键的升序

对于LinkedHashSet和LinkedHashMap,项目的重新插入不会影响插入顺序。

在地图或集合中使用时,这些项目不得更改状态(因此,建议这些项目是不可变的对象):

  • 地图键
  • 套装中的物品

排序要求:

  • 存储的项目实现可比性
  • 定义存储对象的比较器

要保留ORDER BY子句中指定的ResultSet的顺序,请将记录插入到List或LinkedHashMap中。

参考:在Architect's Diary博客上,从我们的JCG合作伙伴 Sanjeev Kumar 选择合适的收藏 。


翻译自: https://www.javacodegeeks.com/2012/09/java-choosing-right-collection.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程——不变性与安全发布

1、不变性 某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象,不可变对象一定是线程安全的。不可变对象很简单。他们只有一种状态,并且该状态由构造函数来控制。 当满足以下条件时,对象才是不可变的&#xff1a…

中tr不能显示字符_垃圾文本识别中基本操作指南和错误总结,第三部分

创建模型需要用到机器学习的库,所以我们先下载sklearn库sklearn库下载完成后再输入库文件,就可以完美运行。然后就是划分测试集和训练集,需要注意的是,在从数据处理函数中导入数据时,足足运行了有将近30多秒&#xff0…

mvc后台post发送json数据

代码比较简单&#xff0c;不废话&#xff0c;直接上代码&#xff1a; /// <summary>/// 提交json数据&#xff0c;并接收/// </summary>/// <param name"apipath">要请求的服务器地址</param>/// <param name"jsonStr">要提…

(转载)20分钟读懂程序集

转自&#xff1a;http://www.cnblogs.com/damonlan/p/3221347.html 说到程序集&#xff0c;我刚开始对这个名词特别的郁闷&#xff01;~。然后 前些天花了些时间 好好读了一下&#xff0c;现在比较清晰了&#xff0c;把一些书上看到的 记下来&#xff0c;以飨读者。希望没浪费你…

大数据胸_喂母乳会导致胸下垂?!你被这个谣言骗了多少年?

很多人认为&#xff0c;给宝宝喂奶会导致胸下垂。有些爱美的妈妈&#xff0c;甚至在宝宝出生6个月后就着急断奶。那么&#xff0c;喂奶真的会导致胸下垂么&#xff1f;给大家讲两个真实的调查结果哈~2004年的一次针对496名新妈妈的调查结果显示&#xff0c;有75%的母乳喂养母亲…

Spring Shell项目发布

Spring Source昨天发布了Spring Shell 。 Spring Shell是一个交互式Shell&#xff0c;可以使用基于Spring的编程模型轻松地通过命令进行扩展。 它是通过除去OSGi依赖项从Spring Roo项目中提取的&#xff0c;并变成了一个独立项目。 这使得那些只希望使用交互式外壳功能的人更容…

自制ACL+DHCP实验(初版)

&#xff08;实验用gns模拟器&#xff09; ACL 实验拓扑&#xff1a; 实验要求&#xff1a; 1.1.1.1→3.3.3.3 不通 11.11.11.11→3.3.3.3 通 2.2.2.2→3.3.3.3 通 实验步骤&#xff1a; 步骤一&#xff1a;基本配置 R1&#xff1a; R1#conf t R1(config)#int lo0 R1(config-if…

pil 图像最大值_第97天:图像库 PIL(二)

上节我们讲了 Python 的图像处理库 PIL 的基本图像处理功能&#xff0c;打开了 PIL 的神秘面纱。这节我们接着讲 PIL 的 Image 模块的常用方法。Image 模块的方法convertImage.convert(modeNone, matrixNone, ditherNone, palette0, colors256)参数说明&#xff1a;mode&#x…

c#的委托用法delegate

转载于:https://www.cnblogs.com/douzujun/p/6555886.html

yii2.0

yii是一个高性能的适用于开发web2.0应用的框架&#xff0c;它自带丰富的功能&#xff0c;包括mvc&#xff0c;dao/aciverecord&#xff0c;缓存&#xff0c;身份验证和基于角色的访问控制&#xff0c;脚手架&#xff0c;测试等&#xff0c;可显著缩短开发时间yii只加载你需要的…

Java中常见的代码冲突

在工作中&#xff0c;最近我对现有Java项目进行了代码清理。 完成该练习后&#xff0c;我可以看到在代码中一次又一次地发生了一组常见的代码冲突。 因此&#xff0c;我想出了此类常见违规的清单&#xff0c;并与同行分享&#xff0c;以使人们有意识地提高代码质量和可维护性。…

np读取csv文件_被 Pandas read_csv 坑了

-- 不怕前路坎坷&#xff0c;只怕从一开始就走错了方向Pandas 是python的一个数据分析包&#xff0c;纳入了大量库和一些标准的数据模型&#xff0c;提供了高效地操作大型数据集所需的工具。Pandas 就是为解决数据分析任务生的&#xff0c;无论是数据分析还是机器学习项目数据预…

Python 第三方库 cp27、cp35 等文件名的含义

What does version name ‘cp27’ or ‘cp35’ mean in Python? 如对于 gensim-0.12.4-cp27-none-win_amd64.whl文件名而言&#xff0c;将其文件名拆分的话&#xff0c;含义分别是&#xff1a; 0.12.4 - package version, they may be using semantic versioningcp27 - this p…

JAVA: 序列化

对象序列化 - 一个对象可以被表示为一个字节序列&#xff0c;保存对象的类型信息、对象的数据&#xff0c;还有对象中的数据类型&#xff0c;以便存储或传输。 反序列化 - 将序列化对象写入文件之后&#xff0c;可以从文件中读取出来&#xff0c;并且对它进行反序列化&#xff…

寻找随机的错误-一个真实的故事

几周前&#xff0c;我完成了RapidFTR开源项目的错误查找 &#xff0c;这花了我三个晚上。 我认为可能值得分享狩猎的故事。 本文将介绍我的工作。 我将概述我的旅程&#xff0c;以实际找到正在发生的事情的根本原因。 我在本文中的目标是突出显示可以使用的技术示例&#xff0c…

铃木uy125摩托车机油_UY125 新瑞梦UM125发布 济南铃木于湖南株洲吹响国IV集结号...

​4月18日&#xff0c;济南铃木在湖南株洲天台开元酒店举行了2019年新品发布会&#xff0c;并于现场发布了两款极具终端战略意义的新款国IV车型&#xff0c;分别为定位“实用运动”的全新个性化踏板车型UY125&#xff0c;以及能够进一步巩固济南铃木在国IV入门级踏板车型领域绝…

473. 核电站问题

★ 输入文件&#xff1a;nucle.in 输出文件&#xff1a;nucle.out 简单对比 时间限制&#xff1a;1 s 内存限制&#xff1a;128 MB 【问题描述】 一个核电站有 N 个放核物质的坑&#xff0c;坑排列在一条直线上。如果连续 M 个坑中放入核物质&#xff0c;则会发生爆炸&…

js判断时间是早上还是下午_牛奶早上喝好,还是晚上喝好?没想到“最佳时间”是这个点,颠覆了!...

都说喝牛奶好&#xff0c;要多喝。可什么时间喝牛奶最好呢&#xff1f;是饭前、饭后还是睡前&#xff1f;又或者喝酒前&#xff1f;确实得好好说说。传言&#xff1a;空腹时身体比较缺能量&#xff0c;牛奶里的蛋白会去提供能量&#xff0c;不会去构成和修复组织(比如修复皮肤)…

Java模因拒绝死亡

也有标题&#xff1b; 我的宠物讨厌Java编码。 有许多Java模因让我很烦&#xff0c;部分是因为它们总是一个坏主意&#xff0c;但主要是因为人们在找到更好的替代方案后的几年里仍在继续使用它们。 使用StringBuffer代替StringBuilder 从2004年开始&#xff0c;用于StringBuf…

Python TK编程第一部分 Hello Again

当你想写大一点的程序的时候&#xff0c;将你的代码封装到一个或者多个类里会是一个不错的办法。下面hello world这个例子来自Matt Conway的Tkinter Life Preserver. [python]view plain copy from Tkinter import * class App: def __init__(self, master): …