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
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/sxjblogs/p/9868160.html

时间: 2024-08-08 16:34:14

Java基础知识(JAVA集合框架之List与Set)的相关文章

JAVA基础知识-java文化基础和运行环境

JAVA基础知识 1,java是95年sun公司推出的开发语言,发展很快,09年被oracle公司收购.至今分为SE.ME.EE三个发展方向和软件版本. 2,运行java的环境主要是通过JVM(java virtual machine)实现的.首先编写.java结尾的源文件,通过编译器编译成.class结尾的字节码文件,然后通过解释器实现在不同平台上一致运行的效果. 3,jvm,jre和jdk的区别:jvm,java虚拟机:jre,java运行环境,jdk:java开发工具包. 4,jdk的下载

java基础知识--java集合框架

java集合框架 1.概述: 集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的. 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的扩展和适应必须是简单的. 整个集合框架就围绕一组标准接口而设计.你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet等,除此之外你也可以通过这些接口实现自己的集合. 集合框架是一个用来代表和操纵集合的统一架构.所有的集合

JAVA基础知识整理 常用框架

JAVA反射---相关资料: 1.Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息 2.反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值. 参考框架:Butterfly Persistence 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种

Java基础---泛型、集合框架工具类:collections和Arrays

第一讲     泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类型的数据,无法加入指定类型以外的数据. 3.泛型是提供给javac编译器使用的可以限定集合中的输入类型说明的集合时,会去掉“类型”信息,使程序运行效率不受影响,对参数化的泛型类型,getClass()方法的返回值和原始类型完全一样. 4.由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就

Java基础知识:集合

Java 集合 1. Collection Iterator接口: 2. List 有序的 Collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 正因为List是有序的,相对于Collection,其增加了以下几个方法: 添加: void add(int index, E element) //在列表的指定位置插入指定元素 void addAll(int index, Collec

【Java基础】04_集合框架

一.java中集合了类的关系图[简化版] 注: 虚线矩形表示接口 实线矩形表示具体实现类 实线矩形加粗表示具体实现类使用频率高,作为重点掌握 集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合类. 而这多种集合类有共性的功能,所以,通过不断的向上抽取,最终形成了集合体系结构. 二.集合与数组的异同(面试题) 1.相同点 他们都是容器,都可以储存数据. 2.区别 长度区别 数组固定:数组对象创建时,长度就固定 集合可变:集合可以随着存储元素个数的变化,长度发生变化 存储元素

阿花宝宝 Java基础笔记 之 集合框架

基本接口:Collection  接口: List  实现类:ArrayList LinkedList  接口:Set(唯一,无序)  实现类:HashSet(哈希) TreeSetMap接口:Map  实现类:HashMap----------------------------------------------------------------------ArrayList类特点:长度可变,连续空间,任意类型,类型相同适用情况:适合多次遍历集合方法: boolean  add(Objec

Java基础知识之集合

Collection集合 特点:长度可变,只能存储引用类型,可以存储不同的类型的元素 list 特点:元素有序(存储和取出的顺序一致),可以重复 LinkedList 数据结构:底层数据结构是数组,查询快,增删慢.线程不安全,效率高 ArrayList 数据结构:底层数据结构是链表,查询慢,增删快.线程不安全,效率高 Vector 数据结构:底层数据结构是数组,查询快,增删慢.线程安全,效率低. set 特点:元素无序,唯一 HashSet 数据结构:底层数据结构是哈希表.哈希表底层依赖两个方法

Java基础知识-java.util.concurrent包下常见类的使用

一,Condition 一个场景,两个线程数数,同时启动两个线程,线程A数1.2.3,然后线程B数4.5.6,最后线程A数7.8.9,程序结束,这涉及到线程之间的通信. public class ConditionTest { static class NumberWrapper { public int value = 1; } public static void main(String[] args) { //初始化可重入锁 final Lock lock = new ReentrantL

java基础知识回顾之java集合类-Properties集合

/** java.lang.Object   |--java.util.Dictionary<K,V>      |--java.util.Hashtable<Object,Object>          |--java.util.Properties * @author Administrator *Properties集合:         * 特点:         * 1,该集合中的键和值都是字符串类型.         * 2,集合中的数据可以保存到流中,或者从流加载