Collection集合和Collections的对比讲解 2022-02-16 18:02 89阅读 0赞 **目录** Collection集合 概述: 集合:集合是java中提供的一种容器,可以用来存储多个数据,集合和数组都是容器. 常用的功能: Collection是所有单列集合的父接口,因此单列集合(Iist和Set)通用的一些方法,下面这些方法可以用于操作所有的单列集合,方法如下. public booklean add(E e):把给定的对象添加到当前集合中. public void clear();清空集合中所有的元素. public boolean remove(E e):把给定的对象在当前集合中删除. public boolean contains(E e): 判断当前集合中是否包含给定的对象。 public boolean isEmpty(): 判断当前集合是否为空。 public int size(): 返回集合中元素的个数。 public Object\[\] toArray(): 把集合中的元素,存储到数组中。 代码演示: 集合和数组的区别 数组:数组的长度是固定的容器, 数组中的存储是同一类元素,可以存储基本数据类型值.集合存储的都是对象,且对象的类型可以不一致,再开发中一般当对象多一点,使用集合进行存储. 集合框架: Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,他有两个重要的子接口.分别是List和Set 1.java.util.List:特点,元素有序,元素可以重复. List的主要的实现类 java.util.ArrayList 概述:此类包含用来操作数组的各种方法,比如排序和搜索等,其所有方法均为静态方法,调用起来非常简单. 操作数组的方法:public static String toString(int\[ \] a),返回指定数组内容的字符串表示形式. public static void sort(int\[ \] a):对指定的int类型数组按数字升序进行排序. java.util.LinkedList(双向链表) 查询慢,增删改快,但是线程不安全,效率较高 简介 详细解析:https://blog.csdn.net/shengmingqijiquan/article/details/52640584 ArrayList和LinkedList区别 总结: 1.对于随机访问get和Set,ArrayList觉得优于LinkedList,因此LinkedList要移动弄指针。 2.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 效率问题 1.tips ArrayList是线性代表 get()直接读取第几个下标,复杂度(1) add(E)添加元素,直接在后面添加,复杂度(1) add(index,E)添加元素,在后面插入,后面的元素需要移动,复杂度(n) remove()删除元素,后面的元素需要逐个移动,复杂度(n) LinkedList是链表的操作 get()获取几个元素 复杂的(n) add(E)添加到后面,复杂度(1) add(index E)添加第几个元素后,需要先查找第几个元素,指针指向操作,复杂度(n) 删除元素remove 直接指向操作复杂度(1) 2.java.util.Set:特点,元素无序,而且不可以重复. Set的主要的实现类有 java.util.Hashset java.util.TreeSet Collections -------------------- # Collection集合 # ## 概述: ## * ### 集合:集合是java中提供的一种容器,可以用来存储多个数据,集合和数组都是容器. ### ## 常用的功能: ## ### Collection是所有单列集合的父接口,因此单列集合(Iist和Set)通用的一些方法,下面这些方法可以用于操作所有的单列集合,方法如下. ### * ### public booklean add(E e):把给定的对象添加到当前集合中. ### * ### public void clear();清空集合中所有的元素. ### * ### public boolean remove(E e):把给定的对象在当前集合中删除. ### * ### `public boolean contains(E e)`: 判断当前集合中是否包含给定的对象。 ### * ### `public boolean isEmpty()`: 判断当前集合是否为空。 ### * ### `public int size()`: 返回集合中元素的个数。 ### * ### `public Object[] toArray()`: 把集合中的元素,存储到数组中。 ### ### 代码演示: ### package com.heima.Collection; import java.util.ArrayList; import java.util.Collection; public class Demo01 { public static void main(String[] args) { //创建集合对象 Collection<String> strings = new ArrayList<>();/*多态形式*/ /*使用方法*/ /*添加功能*/ strings.add("张无忌"); strings.add("赵敏"); /*遍历输出*/ for (String string : strings) { System.out.println(string); } /*判断元素是否存在*/ System.out.println("判断周芷若是否存在:"+strings.contains("周芷若"));//false /*删除元素*/ System.out.println("删除赵敏:"+strings.remove("赵敏")); System.out.println("删除后的元素:"+strings);//张无忌 /*添加元素*/ strings.add("周芷若"); /*判断集合中几个元素*/ System.out.println("集合中有:"+strings.size()+"元素");/*2个元素*/ /*Object[] toArray()转换成一个Object数组*/ Object[] objects = strings.toArray(); for(int i=0;i<objects.length;i++){ System.out.println(objects[i]); } //清空集合 strings.clear(); System.out.println("集合中的内容为:"+strings); /*判断是否为空*/ System.out.println(strings.isEmpty());//true } } ## 集合和数组的区别 ## * ### 数组:数组的长度是固定的容器, ### * ### 数组中的存储是同一类元素,可以存储基本数据类型值.集合存储的都是对象,且对象的类型可以不一致,再开发中一般当对象多一点,使用集合进行存储. ### ## 集合框架: ## * ### Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,他有两个重要的子接口.分别是List和Set ### ### 1.java.util.List:特点,元素有序,元素可以重复. ### ### List的主要的实现类 ### * ### java.util.ArrayList ### * ### 概述:此类包含用来操作数组的各种方法,比如排序和搜索等,其所有方法均为静态方法,调用起来非常简单. ### * ### 操作数组的方法:public static String toString(int\[ \] a),返回指定数组内容的字符串表示形式. ### * ### public static void sort(int\[ \] a):对指定的int类型数组按数字升序进行排序. ### * ### java.util.LinkedList(双向链表) ### * ### 查询慢,增删改快,但是线程不安全,效率较高 ### * ### 简介 ### > 1. **双向链表实现 List 和 Deque接口。实现所有可选的列表操作,并允许插入null值。** > 2. **所有操作的执行方式与双向链表都是一样的。检索操作依据离两端的距离,从开头或结尾开始遍历列表。** > 3. **此未实现同步,可用List list = Collections.synchronizedList(new LinkedList(...))包装。** > 4. **LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。** > 5. **LinkedList 实现 List 接口,能进行队列操作。** > 6. **LinkedList 实现Deque接口,即能将LinkedList当作双端队列使用。** > 7. **LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。** > 8. **-LinkedList 实现java.io.Serializable接口,这意味着LinkedList\*\*支持序列化\*\*,能通过序列化去传输。** > 9. **LinkedList 是非同步的。** > 10. **ArrayList底层是由数组支持,而LinkedList是由双向链表实现的,其中的每个对象包含数据的同时还包含指向链表中前一个与后一个元素的引用。** ### **详细解析:**[https://blog.csdn.net/shengmingqijiquan/article/details/52640584][https_blog.csdn.net_shengmingqijiquan_article_details_52640584] ### ### ArrayList和LinkedList区别 ### > * **Arraylist:底层是基于动态数组,根据下表随机访问数组元素的效率高,向数组尾部添加元素的效率高;但是,删除数组中的数据以及向数组中间添加数据效率低,因为需要移动数组。例如最坏的情况是删除第一个数组元素,则需要将第2至第n个数组元素各向前移动一位。而之所以称为动态数组,是因为Arraylist在数组元素超过其容量大,Arraylist可以进行扩容(针对JDK1.8 数组扩容后的容量是扩容前的1.5倍),Arraylist源码中最大的数组容量是Integer.MAX\_VALUE-8,对于空出的8位,目前解释是 :①存储Headerwords;②避免一些机器内存溢出,减少出错几率,所以少分配③最大还是能支持到Integer.MAX\_VALUE(当Integer.MAX\_VALUE-8依旧无法满足需求时)。以下是Arraylist部分源码:** **源代码:Arraylist扩容** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTc2NzYx_size_16_color_FFFFFF_t_70][] ### 总结: ### ### 1.对于随机访问get和Set,ArrayList觉得优于LinkedList,因此LinkedList要移动弄指针。 ### ### 2.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 ### ### 效率问题 ### ### 1.tips ### ### ArrayList是线性代表 ### ### get()直接读取第几个下标,复杂度(1) ### ### add(E)添加元素,直接在后面添加,复杂度(1) ### ### add(index,E)添加元素,在后面插入,后面的元素需要移动,复杂度(n) ### ### remove()删除元素,后面的元素需要逐个移动,复杂度(n) ### ### LinkedList是链表的操作 ### ### get()获取几个元素 复杂的(n) ### ### add(E)添加到后面,复杂度(1) ### ### add(index E)添加第几个元素后,需要先查找第几个元素,指针指向操作,复杂度(n) ### ### 删除元素remove 直接指向操作复杂度(1) ### ### 2.java.util.Set:特点,元素无序,而且不可以重复. ### ### Set的主要的实现类有 ### * ### java.util.Hashset ### * ### java.util.TreeSet ### # **Collections** # [https_blog.csdn.net_shengmingqijiquan_article_details_52640584]: https://blog.csdn.net/shengmingqijiquan/article/details/52640584 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTc2NzYx_size_16_color_FFFFFF_t_70]: /images/20220216/e3f133fe80264754bb1b40455c532d37.png 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Collection和Collections的区别 1、java.util.Collection 是一个集合框架的父接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。 水深无声/ 2021年07月25日 23:07/ 0 赞/ 204 阅读
相关 Collection集合 集合框架:因为每一个容器储存数据方式不同,所以分很多容器,这个储存方式称为:数据结构。 Collection |----- List:元素是有序的,可重复的,有 刺骨的言语ヽ痛彻心扉/ 2021年09月26日 09:40/ 0 赞/ 243 阅读
相关 Collection接口和Collections类的简单区别和讲解 这里仅仅进行一些简单的比较,如果你想要更加详细的信息话,请自己百度。 1.Collection: 是集合类的上层接口。本身是一个Interface,里面包含了一 柔情只为你懂/ 2021年12月02日 05:46/ 0 赞/ 94 阅读
相关 集合 Collection Java提供的两大接口:Collection接口和Map接口,其他的集合类都是由这两个接口衍生 Collection接口 Collection接口定义了一个包含一批对象的集 柔光的暖阳◎/ 2021年12月02日 06:50/ 0 赞/ 163 阅读
相关 集合 Collection 集合 Collection 目录 (一)集合 1.集合的由来 2.集合和数组的区别 3.Collection集合的功能概述 4.集合和数组之间的相互转换 5. 墨蓝/ 2021年12月03日 22:47/ 0 赞/ 188 阅读
相关 Collection集合和Collections的对比讲解 目录 Collection集合 概述: 集合:集合是java中提供的一种容器,可以用来存储多个数据,集合和数组都是容器. 常用的功能: Collection是所有单列 本是古典 何须时尚/ 2022年02月16日 18:02/ 0 赞/ 90 阅读
相关 Collection和Collections的区别 1、Collection是集合类的上级接口,继承与他有关的接口主要有List和Set 2、Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的 以你之姓@/ 2022年05月18日 09:28/ 0 赞/ 65 阅读
相关 Collection和Collections的区别 Collection是集合类的上级接口,继承与他的接口主要有Set 和List. 1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操 矫情吗;*/ 2022年06月04日 13:27/ 0 赞/ 49 阅读
相关 Collection和Collections的区别 (1) java.util.Collection 是一个集合接口。 它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实 小咪咪/ 2022年08月02日 10:16/ 0 赞/ 47 阅读
相关 java基础讲解之集合鼻祖--- Collection ps:案例来源于毕向东老师Java基础教程 本文讲述了Collection的主要方法,全是干货。附上常用集合的关系图 ![Center][] 知识点一:Collecti た 入场券/ 2022年09月21日 23:24/ 0 赞/ 34 阅读
还没有评论,来说两句吧...