Java-->List&Set
一、List集合
特点:有序可重复
List集合的猜想:
1、每个元素是不是应该有序号 index
2、addFirst、addLast、set(intdex, 对象)
3、get(index)....
1.1 ArrayList
ArrayList是List的一个实现类。
底层其实是使用的数组才实现的集合。
1、ArrayList中可以存储null。并且null也可以重复。
优点:元素查找速度很多。(有下表找到非常方便)
缺点:添加和删除效率低。
1.2 LinkedList
也是List的实现类。
底层是用链表实现的。
优点:添加和删除元素效率高。
缺点:查找的效率低。
使用的时候,仍然是使用的List的一些方法。

1.3、Stack
栈结构。 先进后出
二、Set集合
Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的。总结:无序不可重复
2.1、HashSet
HashSet可以存储null。
HashSet存储的规则问题:
1、存入对象的时候,先获取要存入的对象的Hash值(hashCode方法的返回值)。
如果欲存入的对象的Hash值,与集合中的已经存入的对象的Hash值都不相等,
则认为不重复,添加成功。添加动作结束。
如果发现有与欲添加的对象的HashCode相等的对象,则进入下面的步骤。
2、判断这两个HashCode相等的对象是不是同一个对象,如果是同一个对象(==),则添加失败,添加动作完成。
如果不是同一个对象,则进行下面的步骤。
3、如果不是同一个对象,则调用欲添加对象的equals方法,把与这个对象HashCOde相等的那个对象作为参数传递。返回ture,则代表重复,添加失败。否则添加成功。
注意:在覆写hashCode和equals的时候,要保证这个两个方法重写的规则一样。
意思是说:当hashCode相等的时候,equals返回true。hashCode不等,则应该返回false。
总结:存储HashSet的时候,只需要覆写两个方法:hashCode和equals
Hash表:存了每个元素的Hash值。每新存入一个对象,都会查一次Hash表
2.1.1 LinkedHashSet
底层用栈实现的HashSet
可以保留顺序
以后较常使用
3.2、TreeSet
Java-->List&Set的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- Writing an Hadoop MapReduce Program in Python
In this tutorial I will describe how to write a simpleMapReduce program for Hadoop in thePython prog ...
- ASP.net 验证码(C#) MVC
ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...
- JSON.NET 教程(一)
下载地址:http://www.newtonsoft.com/json 参考官网文档:http://www.newtonsoft.com/json/help/html/SerializingJSON. ...
- [开发笔记]-使用bat命令来快速安装和卸载Service服务
一般我们在编写完Service服务程序后,都是通过cmd命令提示窗口来安装或卸载服务,但频繁的在cmd窗口中去“拼”文件的路径着实让人“不能忍”.所以,我们需要一钟“更快捷”的方式来进行安装或者卸载操 ...
- Android再次激活Activity时触发事件用于列表重新读取载入
@Override protected void onResume(){ super.onResume(); getList(); } 重载 onResume() 方法
- 远程连接Windows2008R2时服务器报Terminal Services错误的解决办法
症状: 使用终端服务客户端连接到Windows Server2008 R2的机器时,如果客户端选项中选择了打印机(注1)时,它可能会在在系统事件日志中记录一个TerminalServices打印机错误 ...
- bzoj 2820 YY的GCD 莫比乌斯反演
题目大意: 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 这里就抄一下别人的推断过程了 后面这个g(x) 算的方法就是在线性 ...
- Xceed WPF 主题皮肤控件Xceed Professional Themes for WPF详细介绍
Xceed Professional Themes for WPF是一款为你的整个应用程序提供完美WPF主题风格的控件,包含Office 2007和Windows 7,可以应用到任何微软官方的WPF控 ...
- Ubuntu 14.10 下安装Ganglia监控集群
关于 Ganglia 软件,Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格.它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数 ...
- QT5.4关联VS2010,配置VAssistX关联Qt类
1.参考网站:http://www.kavenblog.com/?p=272 2.下载插件:http://www.qt.io/zh-hans/download-open-source/#section ...