集合体系之List及其子类ArrayList,LinkedList与Vector及其迭代器知识 List(接口) 特点:有序(存储与取出顺序相同),可重复 List子类特点: ​ ArrayList:底层结构是数组,查询快,增删慢. ​ 线程不安全,效率高. ​ Vector:底层结构是数组,查询快,增删慢. ​ 线程安全,效率低. ​ LinkedList:底层结构是链表,查询慢,增删快. ​ 线程不安全,效率高. List特有功能 添加功能 void add(int index, E ele…
集合体系之Map集合 ##Map<K,V>( 接口 ) 特点:将键映射到值对象,一个映射不能包含重复的键:每个键只能映射一个值 Map集合与Collection集合的区别 ​ Map集合存储元素成对出现,其键唯一值可重复,为双列集合 ​ Collection集合存储元素单独出现,其List子类的元素有序,可重复.其Set子类的元素唯一,为单列集合 注意: ​ Map集合的数据结构只与键有关,与值无关 ​ Collection集合的数据结构针对元素有效 Map集合功能概述 添加功能 put V…
集合体系之Set及其子类知识 Set(接口) public interface Set<E>extends Collection<E> ​ 特点:无序(存储顺序与取出顺序不一致,但它有内在的存储顺序该顺序通过哈希表生成,有时在输入时可能与其内在顺序相同,但之并不代表其有序,多输入几个数据就会发现其无序性),唯一. 其方法与Collection相同,是Set集合框架的顶层接口,不做过多讲解. HashSet(类) public class HashSet<E>extend…
集合体系之集合顶层类Collection与其迭代器知识 集合的由来:Java是一门面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,就必须把多个对象进行存储,而要存储多个对象,就不能是一个基本变量,而应该是一个容器类型的变量,在容器以前的内容中,只有数组和StringBuffer是容器类型.但StringBuffer的结果是一个字符串.故只能使用数组,即对象数组.但对象数组因为长度固定,不能适应变化的需求.所以Java提供集合类. 集合与数组的区别 1.集合的…
集合还是一种工具,所以它们的包都在java.util包下 1.集合的整个体系结构(是需要掌握的体系,完全体系不是这样) 对图中所说的 序和重复 这两词的说明: 序:指的是添加进去的元素和取出来的元素 的 顺序是一样的(不是指集合本身的顺序),如:放进去的时候这个元素在集合中是第一个,取的时候还是第一个--可以参照数组,数组里面的元素不就是有索引,有顺序吗 重复:集合中的两个元素一样,一样的道理:拿数组参照,数组中可以放两个a涩 虽然这个体系很大,但是学懂分支集合中的一种,分支下的其他集合就懂了,…
集合体系框架图 集合接口 Java集合类库将接口(interface)与实现(implementation)分离,如上图,Set是一个集合接口,而HashSet与TreeSet都是实现了Set接口的子类. 从上图中也可以看出,集合的基本接口是Collection.Collection<E>接口里有个iterator()方法(来自Iterable接口),该方法返回了一个实现了Iterator接口的对象,可以使用这个迭代器对象依次访问集合中的元素. 既然要迭代访问集合中的元素,那么就必须要考虑到如…
在经过了前面的JDK6.0新特性的学习后,将进一步深入学习JDK,因为集合的重要性,因此从集合开始入手分析: 一.集合概况 Java是一种面向对象语言,如果我们要针对多个对象进行操作,那么首先必要将多个对象进行保存起来之后,然后才能操作,那么我们肯定会想到用数组来进行存放,但数组长度固定,不能满足变化的要求.所以,JAVA提供了集合. 数组与集合的区别: 数组:长度固定.可以存放基本类型/引用类型.数组中元素的类型必须一致 集合:长度可变自动扩容.只能存放引用类型.集合中元素类型可以不一致但一般…
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有ArrayList,Vector,LinkedList Map下有Hashtable,LinkedHashMap,HashMap,TreeMap collection接口下还有个Queue接口,有PriorityQueue类 注意…
一.集合框架 集合是容纳数据的容器,java常用的集合体系图如下.以集合中是否运行重复元素来分,主要有List和Set接口,List集合中可以有重复元素,Set集合集合中的元素不可重复,Iterator和List Iterator是遍历集合的2个迭代器,Map是存储Key/Value键值对的容器. java集合体系图 二.迭代器 迭代器的用法写在后面,这里说明Iterator和ListIterator的区别: Iterator在遍历一个集合的过程中不能修改集合中的对象,ListIterator可…
1.Set集合(理解) (1)Set集合的特点 无序,唯一. (2)HashSet集合(掌握) A: 底层数据结构是哈希表(是一个元素为链表的数组) B: 哈希表底层依赖两个方法: hashCode() 和 equals() 执行顺序: 首先比较哈希值是否相同 相同:继续执行equals()方法 返回true:元素重复了,不添加 返回false:直接把元素添加到集合 不同:就直接把元素添加到集合 1.人的类 package com.wyh.hashSet; /** * @author WYH *…
一.概述 Java的集合体系,本质上是一个陈放数据的容器,像之前学过的数组也是陈放数据的容器,但在 Java 中数组的长度是固定的,使用起来没那么方便.集合提供了更加强大的功能,使用起来也更方便和快捷.集合体系中提供的方法的底层源代码采用的也是优秀的高效率算法,其他数据容器能操作的,集合都能操作,而且代码更加简洁,思路更加清晰,运行的效率更加高.因此,完全掌握完集合.编程的技能会进一步提高. 二.集合体系 集合作为一个容器,可以存储多个元素,但是由于数据结构的不同,Java 提供了多种集合类,将…
I. 第一部分:常见数据结构 首先简单说下数据结构. 什么是数据结构?数据结构就是组织数据的方式. 常见的数据结构:栈,堆,树,图,数组,队列,链表. 这里主要介绍与java集合体系相关的栈.数组和链表. 栈 特点:压栈弹栈,先进后出. 如:手枪弹夹装弹过程,最先压入的子弹在最下面:而在射击时,最先弹入枪膛的是最上面的子弹,即最后压入弹夹的子弹. 队列 特点:先进先出. 如:子弹射出的过程,先进入枪膛的子弹最先被射出. 数组 概述:用来存储同一种类型元素的容器. 特点:在内存中是连续的,每个元素…
/* * Collections: * 面试题:Collection和Collections有什么区别? * Collection是集合体系的最顶层,包含了集合体系的共性 * Collections是一个工具类,方法都是用于操作Collection * * //static int binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置,必须根据列表元素的自然顺序对列表进行升序排序(通过 sort(List) 方法) * * //s…
一.容器之List集合 List集合体系应该是日常开发中最常用的API,而且通常是作为面试压轴问题(JVM.集合.并发),集合这块代码的整体设计也是融合很多编程思想,对于程序员来说具有很高的参考和借鉴价值. 基本要点 基础:元素增查删.容器信息: 进阶:存储结构.容量管理: API体系 ArrayList:维护数组实现,查询快: Vector:维护数组实现,线程安全: LinkedList:维护链表实现,增删快: 核心特性包括:初始化与加载,元素管理,自动扩容,数组和链表两种数据结构.Vecto…
一.容器之Map集合 集合体系的源码中,Map中的HashMap的设计堪称最经典,涉及数据结构.编程思想.哈希计算等等,在日常开发中对于一些源码的思想进行参考借鉴还是很有必要的. 基础:元素增查删.容器信息: 进阶:存储结构.容量.哈希: API体系 在整个Map和Set的API体系中,最重要的就是HashMap的实现原理: HashMap:基于哈希表管理元素: LinkedHashMap:基于HashMap和双向链表: HashSet:底层维护HashMap结构: LinkedHashSet:…
JAVA的集合体系是个庞大的知识体系,里面涵盖了,如数组结构,链表,红黑树,排序算法,线程安全等等知识点,接下来将会使用一系列的分享文章整理自己的学习心得,留的温故而知新.下图是整理出来的JAVA集合体系的图谱,也查看了其他分享的图谱,有些出入,但是这些事我看源码整理出来的,以偏概全吧,后续发现有不对的地方在及时修改,也欢迎各位读者及时指正,互相探讨.…
Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就是对数据结构的封装 数组与集合的比较 数组:长度固定,可以存储基本数据类型,也能存储对象 集合:长度可变,只能存储对象类型(由于有包装类的存在,集合可以存储任何类型) 集合的体系结构 集合也叫容器,用于存储对象 我们根据不同的需求和不同的数据结构来对集合做了不同的抽象 Collection接口-公共…
List (链表|线性表) 特点: 接口,可存放重复元素,元素存取是有序的,允许在指定位置插入元素,并通过索引来访问元素 1.创建一个用指定可视行数初始化的新滚动列表.默认情况下,不允许进行多项选择. 注意,这是 List(rows, false) 的一种便捷方法.还要注意,列表中的可视行数一旦创建就不能更改. public List(int rows)------------------row-----要显示的项数 2.创建一个初始化为显示指定行数的新滚动列表. 注意,如果指定了零行,则会按默…
JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据类型也是可以引用的 一.基本数据类型的对象包装类 左为基本数据类型,又为引用数据类型 byte Byte int Integer long Long boolean Booleab float Float double Double char Character 我们拿Integer来举例子 //整…
5.集合类 集合类的由来: 对象用于封装特有数据,对象多了须要存储:假设对象的个数不确定.就使用集合容器进行存储. 集合容器由于内部的数据结构不同,有多种详细容器.不断的向上抽取,就形成了集合框架. 集合的特点: 1..用于存储对象的容器. 2.集合的长度是可变的 3.集合中不能够存储基本数据类型值 集合框架的构成及分类: 集合和数组的差别: 1.长度差别:数组的长度固定:集合长度可变 2.内容差别:数组存储的是同一种类型的元素.而集合能够存储不同类型的元素 3.元素的数据类型差别:数组能够存储…
ArrayList源码学习 本文基于JDK1.8版本,对集合中的巨头ArrayList做一定的源码学习,将会参考大量资料,在文章后面都将会给出参考文章链接,本文用以巩固学习知识. ArrayList的继承体系 ArrayList继承了AbstracList这个抽象类,还实现了List接口,提供了添加.删除.修改.遍历等功能.至于其他接口,以后再做总结. ArrayList核心源码 底层基于数组实现,我们可以查看源码,了解其拥有的一些属性: private static final long se…
集合详解: /* Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引. |--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢.线程不同步. |--LinkedList:底层使用的链表数据结构.特点:增删速度很快,查询稍慢.线程不同步. |--Vector:底层是数组数据结构.线程同步.被ArrayList替代了.因为效率低. |--Set:元素是无序,元素不可以重复.. List: 特有方法.凡是可以操作角标的方法都是该体…
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类. ArrayList实现了Serializable接口,因此它支持序列化,能够通过…
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情有点美丽,学学 ArrayList 放松下吧! 什么是 ArrayList ArrayList 是 Java 集合框架中 List接口 的一个实现类. 可以说 ArrayList 是我们使用最多的 List 集合,它有以下特点: 容量不固定,想放多少放多少(当然有最大阈值,但一般达不到) 有序的(元素输出顺序与输入顺序一致) 元素可以为 null 效率高 size(), isEmpty(), get(), se…
集合使用注意事项: 1.集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中去(JDK5之后会进行自动的装箱和拆箱操作,表面上看集合中是可以直接放置原生数据类型进去,但实质上是进过自动装箱成对象操作的): 2.集合当中放置的都是Object类型,因此取出来的也是Object类型(可以放置任意类型的数据),那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型). ArrayList ArrayList常用方法: boolean add(E…
前言 在前面的学习集合中只是介绍了集合的相关用法,我们想要更深入的去了解集合那就要通过我们去分析它的源码来了解它.希望对集合有一个更进一步的理解! 既然是看源码那我们要怎么看一个类的源码呢?这里我推荐的方法是: 1)看继承结构 看这个类的层次结构,处于一个什么位置,可以在自己心里有个大概的了解. 2)看构造方法 在构造方法中,看做了哪些事情,跟踪方法中里面的方法. 3)看常用的方法 跟构造方法一样,这个方法实现功能是如何实现的 注:既然是源码,为什么要这样设计类,有这样的继承关系.这就要说到设计…
List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 ArrayList和Vector做为List的类的两个典型实现,完全支持list集合的全部功能. ArrayList和Vector类都是基于数组实现的List类,所以ArrayList和Vector类封装了一个动态再分配的Object[]数组.每个ArrayList或Vector对象有一个capacity属…
在前两篇博客,学习了ArrayList和LinkedList的源码,地址在这: Java集合(五)--LinkedList源码解读 Java集合(四)--基于JDK1.8的ArrayList源码解读 这篇文章,对比一下ArrayList和LinkedList和Vector,主要是前面两个,因为Vector很少使用,如果考虑并发安全,也会使用 CopyOnWriteArrayList ArrayList和LinkedList的对比:插入.修改.删除.遍历 顺序插入add(Object): 1.Ar…
Java集合框架概述 Java集合工具包位于Java.util包下.包括了非常多经常使用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致能够分为例如以下五个部分:List列表.Set集合.Map映射.迭代器(Iterator.Enumeration).工具类(Arrays.Collections). Java集合类的总体框架例如以下: 从上图中能够看出,集合类主要分为两大类:Collection和Map. Collection是List.Set等集合高度抽象出来的接…
本篇博客主要讲解List接口的三个实现类ArrayList.LinkedList.Vector的使用方法以及三者之间的区别. 1. ArrayList使用 ArrayList是List接口最常用的实现类,内部通过数组来实现,因此它的优点是适合随机查找和遍历,缺点是不适合插入和删除. ArrayList类的代码声明如下所示: public class ArrayList<E> extends AbstractList<E> implements List<E>, Rand…