一、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的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. 选择最适合你的Linux学习方法

    我们知道Linux只是一个内核,现在的Linux操作系统底层都是用这个内核,包括Android手机,所以Linux操作系统其实是将Linux内核与应用软件做一个打包,我们称之为Linux发行版.现在比 ...

  2. [Jquery]网页定位导航特效

    描述:左右联动的导航,非常适合展示页面内容多,区块划分又很明显的,点击右边固定导航项时,左边的内容跟着切换.滑动滚动条的时候,右边的导航也随着左边的展示而进行高亮切换. 思路:比较滚动距离和楼层距离( ...

  3. [Js]跟随鼠标移动的div

    例子:鼠标移动到一块东西上,出现提示文本框,并且提示文本框跟着鼠标的位置动 document.onmouseover=function(ev){ var oEvent=ev||event; var b ...

  4. HTML内容整理

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. PHP 多线程扩展(正儿八经的线程)pthreads安装

    环境CentOS 6.3 64bit,php 5.4.5 pthreads需要线程安全环境, 下载php的安装包,解压: tar zxvf php-5.4.5.tar.gz//名字是不是这个我不确定, ...

  6. POJ 2594 传递闭包的最小路径覆盖

    Treasure Exploration Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 7171   Accepted: 2 ...

  7. WDCP管理面板安装启动EXIF、bcmath完整步骤

    一般我们网站建设的需要,如果使用WDCP面板默认的功能就足够使用,如果需要特殊程序的特定组件支持,就需要独立的安装支持组件.比如一位朋友的程序需要支持EXIF.bcmath组件,这不老蒋寻找解决方法, ...

  8. Android 圆形ProgressBar风格设置

    Android系统自带的ProgressBar风格不是很好,如果想自己设置风格的话,一般有几种方法.首先介绍一下第一种方法通过动画实现.在res的anim下创建动画资源loading.xml: < ...

  9. 【转发】RedHat Enterprise Linux 6.4 使用 Centos 6 的yum源问题

    作为一名新手,学习Linux已经一个月了,其间遇到了不少问题,而今天笔者遇到的问题是 #yum install pam-devel #This system is not registered to ...

  10. Nginx SSL配置过程

    1. 在godaddy购买了UCC SSL(最多5个域名)的SSL证书 2. 设置证书 -- 管理 -- 3. 需要制作证书申请CSR文件(在线工具制作或者openssl命令制作),保存CSR和key ...