| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 什么!?改BUG最牛的人竟然是一位皇帝!!集合前来觐见! -> 正文阅读 |
|
[Java知识库]什么!?改BUG最牛的人竟然是一位皇帝!!集合前来觐见! |
目录 前言:岂可休!!之前竟然有人说我标题王不行了。今日我携新标题勇者归来! 嘿嘿,要说改BUG最牛的人是谁呢?那肯定是雍正帝了,因为雍正专治八阿哥(BUG)嘛。 在雍正的兄弟里,八阿哥有“贤王”之称,正是因为“八爷党”的强大,成为了继承大统的胤禛(雍正皇帝)主要打击对象,雍正皇帝宁可背负残害亲兄弟的骂名,也要将其一网打尽。最终也是登上了帝位。 咱们回到正题哈,今天来和大家说一说容器集合。 集合类又被称为容器,是java数据结构的实现,专门用来存储其他类的对象。集合分为单列集合Collection和双列集合Map。希望通过本篇博客能帮助到大家了解它们。 一、Collection:Collection是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection元素 因为Collection是接口,所以使用它的时候需要通过多态形式创建对象。 常用方法:
遍历: 1.通过集合对象获取迭代器对象。 2.使用循环和 hasNext()方法来控制是否还有元素。 3.循环内通过next()方法获取元素。 Collection分为List、Set和Queue(队列),这个队列我们只要知道一下就好了,不需要过多的关注,主要是List和Set 1、List:特点:? ? ????????? 1.有索引 2.可以存储重复元素 3.元素存取有序 List集合的实现类主要有三个,分别是ArrayList、LinkedList和Vector,其中Vector我们只要了解到它和ArrayList相比较,它是线程安全的,有一个我们很熟悉的类继承于它,就是Stack(栈)。 ArrayList:底层实现:数组 特点:查询快,增删慢。 LinkedList:底层实现:链表 特点:查询慢,增删快。 它允许有空(null)元素。 特有功能:
2、Set:Set的实现类主要是HashSet和TreeSet。 HashSet:底层实现:哈希表结构 特点: 1.底层是哈希表结构 2.元素存取无序 3.没有索引 4.不能存储重复元素 允许包含值为null的元素,但最多只能一个。 其中LinkedHashSet不同于LinkedList和ArrayList同属于List实现类,LinkedHashSet是HashSet的子类。 LinkedHashSet: 底层实现:哈希表和链表 特点: 1.具有可预测的迭代次序。 2.由链表保证元素有序,也就是说元素的存储和取出顺序是一致的。 3.由哈希表保证元素唯一,也就是说没有重复的元素。 TreeSet:底层实现:红黑树 特点: 1.元素有序。元素可以按照一定规则进行排序。具体要取决于构造方法。 2.TreeSet集合没有索引。只能通过迭代器、增强for循环进行遍历。 3.TreeSet集合不能存储重复元素。 自然排序Comparable的使用: 1.用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的。 2.自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法。 3.重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写。 比较器排序Comparator的使用: 1.用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的。 2.比较器排序,就是让集合构造方法接收Comparator的实现类对象,使用匿名内部类方式传递,重写compare(T o1,T o2)方法。 3.重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写。 二、Map:Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。它主要有HashMap和TreeMap、Hashtable,也是了解Hashtable是线程安全的就好。 基本功能:
获取功能:
其中我们通过KeySet方法获得所有键的集合为Set,加上键又是不能重复的。那么我们可以认为Map的键列底层实现是数列加上链表。而vakues方法获得所有值的集合为Collection,底层实现为链表或者数列。 特点: 1.键值对映射关系。 2. 一个键对应一个值。 3.键不能重复,值可以重复。 4.元素存取无序。 遍历: 方式1(键找值): 1.获取所有键的集合。用keySet()方法实现。 2.遍历键的集合,获取到每一个键。用增强for实现?。 3.根据键去找值。用get(Object key)方法实现。 方式2(键值对对象找值): 1.获取所有键值对对象的集合,使用entrySet()实现。 2.遍历键值对对象集合,拿到每一个键值对对象。 3.调用键值对对象中的getKey()和getValue()方法获取键和值。 1、HashMap:JDK1.8 之前 HashMap的底层实现是数组加链表。 JDK1.8之后。当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间,所以底层实现是数组加链表加红黑树。 它具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。 2、TreeMap:TreeMap底层实现:红黑树 特点: 1.无序,不允许重复(无序指元素顺序与添加顺序不一致)。 2.TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种。 三、面试题:1、常见的集合有哪些?
2、Arraylist 与 LinkedList 异同
?3、ArrayList和LinkedList的区别?
4、HashMap与HashTable的区别?
求关注! 求点赞! 求评论! ?万分感谢! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:25:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |