Java基础知识(JAVA集合框架之List与Set)
List和Set概述
数组必须存放同一种元素。
StringBuffer必须转换成字符串才能使用,如果想拿出单独的一个元素几乎不可能。
数据有很多使用对象存,对象有很多,使用集合存。
集合容器因为内部的数据结构不同有多种具体容器,不断的向上抽取就形成了集合框架。
框架的顶层就是Collection接口。
List:列表。元素可以重复,有序(存入和取出有特定的顺序)。List下有三个类比较常用:Vector、ArrayList、LinkedList。
Vector类。
Vector类自JDK1.0就出现了,它可以说是集合框架的元老级干部。集合框架自JDK2.0出现以后,Vector类就加入了集合框架的队伍并归入了List旗下。Vector类的最大特点就是线程安全,这在整个集合框架中都是少见的。正是因为线程安全,所以执行效率低下,到了现在几乎已经废弃。即使在多线程编程中也不会使用它,而是使用ArrayList加锁代替。Vector内部是一个数组结构,并且是可增长的,步长为100%。Vector增删查询都很慢。
ArrayList类。
ArrayList类是为了替代Vector类而出现的,所以它的功能几乎和Vector类完全相同,但它是非同步的。ArrayList内部也维护了一个变长的数组,增长的步长为50%,查询速度很快。
LinkedList类。
LinkedList是List接口链接列表实现。也就是说我们说的链表。LinkedList最大的特点就是增删速度非常快。
LinkedList类概述。
LinkedList底层是链表数据结构,这就导致了它的内容在内存中并不是连续的。这也使得它增删速度快而查询速度慢。注意,LinkedList中存储的都是对象的地址,即引用,而非对象本身
ArrayList类概述。
ArrayList和Vector类几乎相同,略。
但需要注意的是,ArrayList中存储的是对象的引用,即地址,而非对象本身。如果ArrayList容器发生了al.add(3);这种情况,但是编译器并没有报错,不能认为是集合中可以存储基本数据类型,事实上在这个过程中发生了两件事:自动装箱以及上转型。这和Object obj=3;有着异曲同工之妙。
方法。略。
注意,虽然ArrayList略掉很多,但并不是说它不重要,只是因为方法中和List接口中的差不多,所以就不做介绍了。实际上在开发中最常使用的类就是ArrayList。
7.LinkedList和ArrayList都有get方法,有什么区别?
两者虽然都是List的子类,但是ArrayList的底层是数组数据结构,在内存中是连续的,所以使用get方法并不用从头开始查找;但是LinkedList底层是链表数据结构,即使使用了get方法,但是仍然需要从头开始查找。
Set:集合。元素不允许重复,无序(有时候有序,特别是经过特殊处理的时候比如在TreeSet中更是如此)。
一、Set概述。
Set集合的特点是元素不允许重复,而且是无序的(添加和取出的顺序不一致)。
Set接口中的方法和Collection接口中的方法几乎相同,略。
Set接口下常用的两个类:HashSet、TreeSet。
Collection
-> Set 无序不重复 -> 无序HashSet,需要排序TreeSet
-> List 有序可重复 -> 查,改ArrayList,增删LinkedList
List为列表,中在列表中的对象是由顺序的排序的,并且是有重复的对象。
简单为:有序,有重复。
Set为集合,在集合中的对象是不按照顺序排列的,并且是没有重复的对象的。
简单为:无序,无重复。
Set为无序集合,无序无重复;List为有序集合,有序有重复;
Set Map 算法
--------------------------------------------------------------------------
HashSet HashMap 哈希表
TreeSet TreeMap 红黑树
LinkedHashSet LinkedHashMap 哈希表/链表
---------------------
作者:西门吹雪叶孤城
来源:CSDN
原文:https://blog.csdn.net/yangying496875002/article/details/73729290
版权声明:本文为博主原创文章,转载请附上博文链接!
Java基础知识(JAVA集合框架之List与Set)的更多相关文章
- Java基础知识:集合框架
*本文是最近学习到的知识的记录以及分享,算不上原创. *参考文献见链接. 目录 集合框架 Collection接口 Map接口 集合的工具类 这篇文章只大致回顾一下Java的总体框架. 集合框架 ht ...
- JAVA基础知识|java虚拟机(JVM)
一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...
- Java基础---泛型、集合框架工具类:collections和Arrays
第一讲 泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类 ...
- Java基础知识之集合(容器)简介
JAVA的集合体系,主要由Collection接口,Map接口,Iterator接口和操作集合的工具类Collections组成.其中的Iterator只是一个迭代器,真正的容器则派生自Collect ...
- java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
- [java基础知识]java安装步骤
jre: java运行环境. jre = java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre. jdk: java开发工具集 jd ...
- Java基础知识之集合
Collection集合 特点:长度可变,只能存储引用类型,可以存储不同的类型的元素 list 特点:元素有序(存储和取出的顺序一致),元素可以重复.list除了可以用迭代器循环遍历之外,因为其是有序 ...
- java 基础知识(java web 方面的)
1.java面向对象的基本特征:封装性,多态性,继承性. 2.Java的泛型:iterator接口主要有hasnext()方法,next()方法,remove()方法:collection接口继承了i ...
- [转] Java基础知识——Java语言基础
http://blog.csdn.net/loneswordman/article/details/9905931 http://blog.csdn.net/wanghuan203/article/d ...
- java基础知识精华
转载:https://www.jianshu.com/p/6c078abb720f java基础知识 java内存模型 java运行时数据区域 hashMap 如何解决冲突 存储方式 冲突达到一定数量 ...
随机推荐
- 【Nginx】配置及使用
常用命令: nginx -t //可以查到配置是否正确,以及配置文件路径. 如果配置不生效 sudo killall -9 nginx 注意在配置文件中注明访问来源(例如没有写明ip,就不能通过ip直 ...
- [UFLDL] ConvNet
二十三(Convolution和Pooling练习) 三十八(Stacked CNN简单介绍) 三十六(关于构建深度卷积SAE网络的一点困惑) 五十(Deconvolution Network简单理 ...
- [JS] Topic - hijack this by "apply" and "call"
Ref: 详解js中的apply与call的用法 call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 参数形式: Function.apply(obj,args) call方法与 ...
- 【!Important】Java线程死锁查看分析方法
一.Jconsole Jconsole是JDK自带的图形化界面工具,使用JDK给我们提过的工具JConsole,可以通过cmd打开命令框然后输入Jconsole打开图形工具 然后点击检测死锁就可以查看 ...
- [原]openstack-kilo--issue(十一)Failed connect to 169.254.169.254:80; No route to host
本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. # curl http://169.254.169.254/latest/use ...
- web站点健康检测和告警小脚本
#!/bin/sh web01="http://172.18.52.xx:8080/web/api/getTime" web02="http://172.18.52.xx ...
- 使用Python往手机发送短信(基于twilio模块)
官网是https://www.twilio.com twilio的一句话介绍——提供SDK帮你连接世界上所有人,你可以很方便的调用他们提供的接口来给指定手机发短信,打电话. 首先在twilio的官网注 ...
- day_6.16网络编程
单线程服务器select版: select ---->最多1024个 poll ----->解决了套接字上限的问题----->轮询检测 关于 sys模块: 通过fd找套接字 协程: ...
- 设计模式学习--Abstarct Factory
What Abstarct Factory:提供一个创建一系列相关或相互依赖的接口,而无需指定他们具体类. Why Abstarct Factory是创建型设计模式的一种,主要在创建对象时解耦,避免对 ...
- Oracle数据库版本10.2.0.1升级到10.2.0.3(转)
Oracle数据库版本10.2.0.1升级到10.2.0.3 1.停止OEM/isqlplus/监听/DB实例 $ emctl stop dbconsole $ isqlplusctl stop $ ...