Java集合类

本文介绍了Java集合框架的基本概念,对比了数组与集合的区别,并详细解释了Collection和Map接口及其子接口的功能特性。此外还介绍了几种常用的集合实现类,如ArrayList、LinkedList、HashSet和TreeSet等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在描述java集合类之前,先说一下关于集合的几个概念。
- 为什么出现集合类?
为了保存数量不确定的元素,以及保存具有映射关系的数据(也被称为关联数组)。
- 数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但长度是固定的;机和长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。
- 为什么会出现这么多的容器?
因为每个容器的存储方式都有不同。
这个存储方式称之为:数据结构。
- 集合类的特点
集合只用于存储对像,集合长度可变,集合可以存储不同类型的对象。

集合框架构成及分类

Java集合类主要有两个接口派生:Collection和Map
Collection和Map这两个接口是Java集合类里的根接口,这两个接口又包含了一些子接口和实现类。

Collection接口

Collection接口有两个子接口

List(列表),Set(集)
List:可存放重复元素,元素存取是有序的。
Set:不可以存放重复元素,元素存取是无序的。

List接口中常用类

Vector:线程安全,但速度慢,已被ArrayList替代。
ArrayList:底层数据结构使用数组结构。
特点:查询速度快,但是增删稍慢,线程不安全。
LinkedList:底层使用链表结构。
特点:增删速度快,查询速度慢

取出LIst集合

中元素的方式:
• get(int index):通过脚标获取元素。
• iterator():通过迭代方法获取迭代器对象。

迭代

  • 迭代是取出集合中元素的一种方式。
  • 因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。
    用法 :
    Iterator iter = l.iterator();
    while(iter.hasNext())
    {
    System.out.println(iter.next());
    }
    for(Iterator iter = iterator();iter.hasNext(); )
    {
    System.out.println(iter.next());
    }
    上面两种方法建议使用第二种,因为第一种方法创建的iter对象无法释放点,会一直占用内存,而第二种方法使用一次后就会被释放掉。

Set接口中常用的类

  • HashSet:
    线程不安全,存取速度快。
    它是如何保证元素唯一性的呢?
  • TreeSet:
    线程不安全,可以对Set集合中的元素进行排序。
    它的排序是如何进行的呢?

Set集合唯一性的原因

  • HashSet:
    通过equals方法和hashCode方法来保证元素的唯一性。
  • TreeSet:
    通过compareTo或者compare方法中的来保证元素的唯一性。元素是以二叉树的形式存放的

Map接口

所有的Map实现类用于保存具有映射关系的数据。Map接口的众多实现类在功能,用法上存在一定差异,但他们都有一个功能特征:Map保存的每项数据都是key-value对,也就是由key和value两个值组成。
例如:成绩单,各项成绩都有科目名和成绩组成(语文-88),对于一张成绩单而言,科目是不能重复的,而成绩是可重复的,通常习惯根据科目来查阅成绩,而不会根据成绩来查阅科目。Map与此类似,Map里的key是不可重复的,key用于标识集合里的每项数据,如果需要查阅Map中的数据时,总是根据Map的key来获取。

集合实现类(集合类)

Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类可以直接拿来使用,而另外一些是抽象类,提供了接口的部分实现。

标准集合类汇总于下表:
这里写图片描述
这里写图片描述
这里写图片描述
至于集合类的详细介绍将在后面的博客中写到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值