Collection及其子类的简单总结_唐唐唐piong的博客-程序员宅基地_collection子类

技术标签: JAVA  

集合的概念:对象的容器,存储对象的对象,可代替数组

Collection体系集合图:

 

Collection接口:代表一组任意类型的对象,无序,无下标

  • public interface Collection<E> extends Iterable<E>

Collection集合中比较重要的两个方法:

  1. add():向集合中添加元素
  2. iterator():返回此集合中的元素的迭代器,取得Iterator接口的对象,用于输出数组

List接口:

特点:有序,有下标,允许重复的元素

两个扩展的重要的方法:

  1. E get(int index):根据索引获得元素
  2. E set(int index, E element):修改元素的值

ArrayList:

特点:基于数组实现,扩容为原先的1.5倍,ArrayList时间复杂度为1

使用场景:频繁查找或者在尾部进行添加或者删除时

ArrayList源码分析:

https://blog.csdn.net/weixin_43573534/article/details/100084272

LinkedList:

特点:基于链表实现,LinkedList时间复杂度为n

使用场景:频繁在任意位置进行插入或删除时

Vector:

特点:基于数组实现,线程安全,当产生对象时就初始化内部数组的大小(默认为10),扩容为原来的2倍

因为它是读读互斥(get方法被synchronized关键字修饰)的所以性能很低

Set接口:

特点:无序,无下标,不允许重复的元素

hashSet:

TreeSet:底层是HashMap

特点:TreeSet使用的是升序排列的模式完成的。我们可以利用TreeSet实现数据的排列处理操作。此时要想进行排序实际上是针对于对象数组进行的排序处理,而如果要进行对象数组的排序,对象所在的类一定要实现Comparable接口并且 覆写compareTo()方法,只有通过此方法才能知道大小关系

重复元素判断:

在使用TreeSet子类进行数据保存的时候,重复元素的判断依靠的ComParable接口完成的。但是这并不是全部Set

接口判断重复元素的方式,因为如果使用的是HashSet子类,由于其跟Comparable没有任何关系,所以它判断重

复元素的方式依靠的是Object类中的两个方法:

1. hash码: public native int hashCode();

2. 对象比较:public boolean equals(Object obj);

Java中进行对象比较的操作有两步:第一步要通过一个对象的唯一编码找到一个对象的信息,当编码匹配之后再

调用equals()方法进行内容的比较。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43573534/article/details/100080505

智能推荐

BD-WAF-M5000规则设置方法_weixin_33744141的博客-程序员宅基地

求一篇BD-WAF-M5000规则设置的文档或者应用实例!谢谢转载于:https://blog.51cto.com/13598218/2072283

复习 J2SE基本内容 设计模式(GOF)_甜饼怪的博客-程序员宅基地

设计模式 为了可重用代码 使代码更容易理解 保证代码可靠性 解耦单子设计模式适配器设计模式装饰者模式单子设计模式 唯一 单态 对某个类只能存在一个对象实例 并且对该类提供了一个取得其对象实例的方法第一种写法: 必须将类的构造方法的访问权限设置为私有模式 private 目的是使new无法在类的外部产生类的对象 在类的内部定义并产生唯...

大工程 施工中..._a286397944的博客-程序员宅基地

各种各样的模版,一个代码解决(施工中,尚未完工)#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#include&lt;queue&gt;#include&lt;cmath&gt;using namespace std;#define ll long l...

详解MathType引用公式编号功能_weixin_33896069的博客-程序员宅基地

在论文创作期间,如果需要在文本中删除大量的公式,手动编号删除的工作量是比较大的,使用MathType引用公式编号功能就可以节约大量的时间,提供很大的方便。本教程将详解MathType引用公式编号功能。MathType提供四种类型的公式输入:inline、display style、left numbered display style、right numbered display style,...

android评分条RatingBar自定义设置_weixin_34121304的博客-程序员宅基地

RatingBar为评分条控件,默认效果为若干个绿色的星星,如果想将其换成其他自定义图片就要自定义它的style。首先是布局文件:1 &amp;lt;RatingBar android:id=&quot;@+id/app_ratingbar&quot; style=&quot;@style/MyRatingBar&quot; 2 android:layout_marginTop=&quot;4di...

PTA 循环结构 7-5 穷举法搬运砖块问题_komorebi123_的博客-程序员宅基地_pta穷举法搬运砖块问题

这是中国古典算术问题,某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。有多少种搬法用N人正好搬N块砖。输入格式:输入正整数N。输出格式:输出所有满足条件的搬法,每种搬法占一行。每行按如下格式依次输出该搬法中男人、女人、小孩的人数,按男人人数的递增顺序输出,中间用空格间隔(=前后没有多余的空格,行末也无空格)。men=男人数 women=女人数 child=小孩数若没有满足条件的搬法,则输出"No solution!"输入样例1:45输出样例1:men=0

随便推点

fair scheduler配置_track sun的博客-程序员宅基地

&lt;property&gt; &lt;name&gt;yarn.resourcemanager.scheduler.class&lt;/name&gt; &lt;value&gt;org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler&lt;/value&gt; &lt...

数据库表的自增键设计_weixin_41571449的博客-程序员宅基地

最近做了一些涉及到分库分表和跨机房drc的业务改造,包括了一些导数据的工作,为了数据连续性,我觉得一个自增的值还是需要的,简单靠id生成器当表大小达到一定程度会变得难以扫表。1.项目初期,为了快速开发,往往会使用一个自增主键。优点在于表存储性能会好,而且便于扫表统计数据,因为有一个连续的字段。 2.随着项目扩大,分库分表形成了一个趋势,这时候就要摘掉自增主键,或者用别的方式存储这个自增主键,...

易语言取c盘文件夹中的文件被占用,易语言检测文件被哪个进程占用的代码_乔一帆丶的博客-程序员宅基地

易语言检测文件被哪个进程占用的代码检测文件占用的代码此功能需要加载贝贝吧模块6.6.版本 2.支持库 eAPI.程序集 窗口程序集_启动窗口.子程序 _查询按钮_被单击.局部变量 进程名, 进程信息, , "0".局部变量 进程id, 整数型, , "0".局部变量 a, 整数型, , "0".局部变量 i, 整数型进程名 = 取系统进程列表 ()显示占用列表框.清空 ().计次循环首 (取数组成...

C++面试总结_Leslie_To的博客-程序员宅基地

2021 C++面试题1、虚函数的底层实现原理2、sizeof结构体对齐3、static静态变量4、CretateThread和_beginthreadex区别5、new和malloc区别,什么样情况选择new?什么情况下选择malloc6、VS中编译器MT /MD的区别?7、动态库和静态库的区别?8、文件系统概念知识9、VS远程调试代码10、数据库优化11、线程同步12、进程同步13、互斥锁和临界区的区别?14、为什么文件映射比传统的write、Read速度快?15、wind

金庸小说的模式_weixin_30258027的博客-程序员宅基地

痴男怨女,情孽牵缠,至死不渝射雕英雄传:瑛姑对周伯通,穆念慈对杨康;神雕侠侣:李莫愁对陆展元;笑傲江湖:岳灵珊对林平之;倚天屠龙记:纪晓芙对杨逍,二者的女儿却叫不悔;求之不得:神雕侠侣:杨过对郭芙笑傲江湖:令狐冲对岳灵珊;倚天屠龙记:张无忌对周芷若;人物性格:如何避免人物、角色的脸谱化推陈出新,兵行险着,以怪取胜;东邪西毒南帝北丐,东...

php websocket 弹幕,Go如何使用websocket实现弹幕功能_黄孚嘉的博客-程序员宅基地

下面由Golang教程栏目给大家Go使用websocket实现弹幕功能的方法,希望对需要的朋友有所帮助!使用websocket协议,客户端发送一个消息,服务端广播到所有有效连接中。主要思路:1.封装*websocket.conn,用client结构表示一个客户端。2.维持一个map[client]bool,表示有效的客户端映射,用于广播消息3.除了处理websocket连接外,还要开启一个广播协程...