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#多用于业务系统的开发 ...
随机推荐
- 一天完成把PC网站改为自适应!原来这么简单!
http://www.webkaka.com/blog/archives/how-to-modify-a-web-page-to-be-responsive.html 一天完成把PC网站改为自适应!原 ...
- plist文件的读取
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cinemalist" ofType:@"pl ...
- UVa 11426 - GCD - Extreme (II)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- NOIP 2013 提高组 day1 T2 火柴排队 归并 逆序对
描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑i=1n(ai−bi)2∑i=1n(ai−bi) ...
- WP8.1 Study2:MapControl控件的应用
总的界面布局如下:
- 腾讯微博数据抓取(java实现)
不多说,同样贴出相关代码 参数实体: package token.def; import java.io.Serializable; import java.util.Properties; publ ...
- Android TextView多行垂直滚动
在Android应用中,有时候需要TextView可以垂直滚动,今天我就介绍一下怎么实现的.在布局里: <TextView android:id="@+id/tvCWJ" a ...
- iOS网页开发技术总结
网页组成 一个有具体功能的完整的网页,一般由3部分组成 HTML:网页的具体内容和结构 CSS:网页的样式(美化网页最重要的一块) JavaScript:网页的交互效果,比如对用户鼠标事件做出响应 H ...
- C# 启动关闭.exe进程(转)
后台代码: 1 using System.Diagnostics; 2 3 protected void Button1_Click(object sender, EventArgs e)4 ...
- MySQL语句45道练习题及答案
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...