Java 常用集合总结(详细)

一、集合和数组概念在Java中,数组是存储某一类型的数据的容器,但是这个容器有局限性,因为定义后的数组长度不可变,超出长度后,再存放数据就会报错(例如:数组下标越界)。而且数组只能存放基本数据类型和对象在开发过程中,大多时候数据长度是不确定的,这就需要有不定长的容器来存放数据,这就涉及到集合Collection,Java 中的集合Collection都采用了泛型实现,可以存入任何类型的对象...
摘要由CSDN通过智能技术生成

一、集合和数组概念

在Java中,数组是存储某一类型的数据的容器,但是这个容器有局限性,因为定义后的数组长度不可变,超出长度后,再存放数据就会报错(例如:数组下标越界)。而且数组只能存放基本数据类型和对象

在开发过程中,大多时候数据长度是不确定的,这就需要有不定长的容器来存放数据,这就涉及到集合Collection,Java 中的集合Collection都采用了泛型实现,可以存入任何类型的对象数据,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。它以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,从而大大提高了软件的开发效率

二、集合分类

Java的集合类主要由两个接口派生而出: Collection和Map, Collection和Map是Java 集合框架的根接口,这两个接口又包含了一些子接口或实现类。

Java集合框架是一个用来代表和操纵集合的统一架构,包含如下内容:

接口:代表集合的抽象数据类型。例如: Collection、List、Set、Map 等。定义多个接口,便于以不同的方式操作集合对象

实现(类):接口的具体实现。例如:ArrayList、LinkedList、HashSet、HashMap。

算法:实现接口的对象里的方法中执行的计算,例如:Collections 工具类提供了对集合进行排序,遍历等多种算法实现。

Collection接口下有三个子接口,List,Queue,Set及最常用的三个类,ArrayList,LinkedList,HashSet。

Map接口下最常用的是HashMap。

1、Collection接口

Collection 是最基本的集合接口,是单列集合的顶层父类,一个独立元素的序列。一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。Collection 接口存储一组不唯一,无序的对象。

  1)List集合是一个有序的队列,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,允许有相同的元素。List 接口存储一组不唯一,有序(插入顺序)的对象。

        List的实现类有LinkedList、ArrayList、Vector、Stack。

 2)Set集合是一个不允许有重复元素的集合。存储一组唯一,无序的对象。

       Set的实现类有HashSet、TreeSet。

       HashSet依赖于HashMap,他实际上是通过HashMap实现的;

       TreeSet依赖 于TreeMap,他实际是通过TreeMap实现的。
 

 2、Map接口

是双列集合的顶层父类接口,是一个映射接口,即key-Value键值对。允许使用键来查找对应的值,从某种意义上来说,他将数字和对象关联在一起。Map中的每一个元素包含"key"和"key对应的value"。

 1)Map.Entry:描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。

Entry将键值对的对应关系封装成了对象。
即键值对对象,在遍历Map集合时,可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
相关方法
getKey()方法:获取Entry对象中的键
getValue()方法:获取Entry对象中的值
entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。

 2)Map的实现类有:HashMap ,TreeMap。LinkedHashMap 继承自 HashMap 。

3、迭代器Iterator

 1)Iterator通常被称为轻量级对象,创建它的代价很小,它是遍历集合的工具,通常通过Iterator迭代器来遍历集合。Collection依赖于Iterator,Collection的实现类都要实现iterator()函数,返回一个Iterator对象。

三、List接口

  • ArrayList介绍

ArrayList是一个数组队列,也是一个动态数组,底层是Object数组,容量是自增长的,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点。它继承与AbstractList。

ArrayList线程是非安全的,一般使用在单线程的情况下。要保证同步,可以使用:List list = Collections.synchronizedList(new ArrayList());进行包装,默认容量为10.

ArrayList可以有null值

ArrayList集合特点:底层采用的是数组结构

ArrayList al=new ArrayList();//创建了一个长度为0的Object类型数组
 al.add("abc");//底层会创建一个长度为10的Object数组 Object[] obj=new Object[10]
               //obj[0]="abc"
              //如果添加的元素的超过10个,底层会开辟一个1.5*10的长度的新数组
              //把原数组中的元素拷贝到新数组,再把最后一个元素添加到新数组中
 原数组:
 a b c d e f g h k l
 添加m:
 a b c d e f g h k l m null null null null

常用方法:add,addAll,remove,indexOf,subList,contains,isEmpty

  •  LinkedList介绍

LinkedList 是一个继承于AbstractSequentialList的双向链表。实现了List、Deque、Cloneable、Java.io.serializable接口,它也可以被当作堆栈、队列或双端队列进行操作,。 
LinkedList 是非线程安全的,集合中的元素允许为空,保存的元素为有序的,实现了List接口,则允许集合中的元素是可以重复的。经常用在增删操作较多而查询操作很少的情况下。

1)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用Java List集合方法包括以下几种: 1. 将元素插入到集合的首部或尾部:可以使用LinkedList的addFirst()方法将元素插入到集合的首部,使用addLast()方法将元素插入到集合的尾部。注意,如果使用的是List接口的引用,需要进行类型转换为LinkedList才能使用LinkedList特有的方法。\[1\] 2. 通过索引访问列表元素:List接口提供了四种位置(索引)访问列表元素的方法。索引从0开始,即第一个元素的索引为0。这些方法包括get()、set()、add()和remove()。需要注意的是,具体实现类(如LinkedList)的索引值可能会有所不同,所以在不清楚具体实现的情况下,最好通过迭代列表中的元素来访问。\[2\] 3. 添加元素到ArrayList:ArrayList是List接口的一个常用实现类,它采用了数组的存储方式,分配连续的内存空间。可以使用ArrayList的add()方法将元素添加到集合中。ArrayList可以添加任何类型的对象,不同类的实例对象都可以添加进去,但是添加的数据都会被转换成Object类型。\[3\] 这些是Java List集合的一些常用方法,可以根据具体的需求选择适合的方法来操作集合中的元素。 #### 引用[.reference_title] - *1* *3* [JAVA集合——(List类中常用的方法总结)](https://blog.csdn.net/gitets/article/details/109702884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java_List(集合)_常见方法操作(实例)](https://blog.csdn.net/Lee0620/article/details/120776429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值