Java中集合类是放在java.util中,是一个用来存放对象的容器。

1、只能存放对象,不能存放int等类型,存的是对应的是Integer等对象

2、存的是对象的引用,对象本身是放在堆内存中

3、可以存放不同类型的对象(因为实现的时候使用了泛型),不建议使用。

常用的三种集合接口:

List:继承自Collection。可以存在相同的对象,有序的。具体实现类有ArrayList,LinkedList,Vector等(已经被废弃,很少使用)

Set:继承自Collection。不能存在相同的对象,无序的,就是数学意义上的集合。具体实现类有HashSet,LinkedHashSet,TreeSet等。

Map:以键值对的形式存放对象。key-value。一般是key为String类型,value为Object的类型。具体实现类有HashMap,LinkedHashMap,TreeMap等。

ArrayList:实现自List接口。底层是以数组的形式实现,可以按照索引取出对应位置的元素,允许元素为null。不是线程安全的。查找速度快,插入、删除慢。

LinkedList:实现在List接口。底层是以双向链表的形式实现。所以插入,删除快,但是查找慢。不是线程安全的。

使用迭代器Iterator遍历list集合

HashSet:实现Set接口。不能保证元素的顺序,元素不能重复。元素可以为null。底层是一个数组,但是元素的位置和元素的取值不存在确定的关系,而是将元素进行Hash运算之后的位置。这样做是为了增加查询的速度。index = hash(value)。不是线程安全。

当向HashSet集合中存入一个元素时,HashSet会先调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置。如果hashCode 值不同,直接把该元素存储到 hashCode() 指定的位置。如果 hashCode 值相同,那么会继续判断该元素和集合对象的 equals() 作比较。hashCode 相同,equals 为 true,则视为同一个对象,不保存在 hashSet中。hashCode 相同,equals 为 false,则存储在之前对象同槽位的链表上,这非常麻烦,我们应该约束这种情况,即保证:如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。

以迭代器Iterator遍历set集合

遍历后的结果

HashMap:是一个映射关系。这个集合中的数据是以Entry(key,value)的形式存在。一般情况下,key是String,而value是Object。key不能重复,但是value可以重复。HashMap的原理是index=hash(key)。也就是根据key进行hash运算来确定Object的存储位置。

HashMap的几种遍历方法

java集合讲解_Java集合详解相关推荐

  1. 泛型java 代码讲解_Java泛型详解

    2516326-5475e88a458a09e4.png 一,打破砂锅问到底 泛型存在的意义? 泛型类,泛型接口,泛型方法如何定义? 如何限定类型变量? 泛型中使用的约束和局限性有哪些? 泛型类型的继 ...

  2. java 观察者模式讲解_java观察者模式详解

    简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象.这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新. 观察者 ...

  3. java泛型 初始化_Java泛型详解

    概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即"参数化类型".一提到参数,最熟悉的就是定义方法时有 ...

  4. java hashmap实例_java HashMap详解及实例代码

    java hashmap /* * map集合的特点 * 将键映射值的对象,一个映射不能包含重复的值:每个键最多只能映射到一个值 * * map集合和collection集合的区别? * map集合存 ...

  5. java method 注解_JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...

  6. java递归函数例子_Java递归函数详解附案例

    递归函数在Java语言中得到了广泛的应用,它使得程序的编写过程更加的清晰明了.对Java初学者来讲,递归函数是需要学习的一个重要知识点.本文将附上案例和演示代码,具体为大家介绍递归函数的概念.要素以及 ...

  7. Java注解库_Java 注解详解

    本文部分摘自 On Java 8 基本语法 注解是 Java 5 所引入的众多语言变化之一,是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影 ...

  8. java虚拟机进程_Java虚拟机详解(七)------虚拟机监控和分析工具(1)——命令行...

    通过前面的几篇博客,我们介绍了Java虚拟机的内存分配以及内存回收等理论知识,了解这些知识对于我们在实际生产环境中提高系统的运行效率是有很大的帮助的.但是话又说回来,在实际生产环境中,线上项目正在运行 ...

  9. java邮箱正则表达式_Java正则表达式详解

    亲爱的小伙伴们,本期我们讲解java中的正则表达式和它相关的一些类与方法. 概述 正则表达式非常强大,能够解决我们开发时用于匹配一些特定的要求.并且java中还提供了相当强大的方法,扩展其功能性.下面 ...

最新文章

  1. hung-yi lee_p17_卷积神经网络
  2. boost::hana::typeid_用法的测试程序
  3. jquery中如何表达本页网址_jquery中怎么跳转页面?
  4. 复数基础—— i = 根号 -1 _3
  5. linux查看CPU高速缓存(cache)信息
  6. 12.结账流程(Checkout Process)
  7. 数据分析第四天--数据抽取、数据合并和数据计算
  8. kylin安装以及遇见到的一些问题和解决方法
  9. Shell中IF大于等于小于
  10. 《21天学通HTML+CSS+JavaScript Web开发(第7版)》——2.4 您要在Web上做什么
  11. Resource leak解决办法
  12. easyPOI导出时间字段注意事项
  13. python怎么读取石墨表格_石墨这种多人文档编辑协作如何用开源软件实现?
  14. OpenCV_11高反差保留
  15. 经济学概念:货币倍增、债务证券市场、股票市场、大宗商品、期权
  16. 攻防世界PWN之house_of_grey题解
  17. k8s(kubernetes)通过jenkins从harbor拉取镜像,包括yaml传参(史诗级,保姆级)
  18. 未明学院:量化训练营,帮我拿下新加坡国立大学定量金融offer!
  19. session购物车操作
  20. 【C语言】结构体类型的定义与使用

热门文章

  1. cmd输入pip报错_Houdini安装外部python库(pip)
  2. python通过函数类属性_函数作为类属性的赋值如何成为Python中的一个方法?
  3. docker compose dns 缓存_Docker深入浅出 | Docker Compose多容器实战
  4. java的环境变量_java学习册|JDK|环境变量
  5. 动态分区分配算法代码_【代码】巩敦卫等TEVC论文:基于区间相似度分析的协同动态区间多目标进化优化算法...
  6. python字符串用空格切片_Python切片操作去除字符串首尾的空格
  7. BIM 360 Docs API在操作欧洲数据中心内容的一些调整
  8. 基于jquery的tab切换
  9. Hprose开源的高性能远程对象服务引擎
  10. java实现线性顺序表