第六章 集合(一)

6.1 集合概述

Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。
在这里主要讲一些我们平常很常用的一些接口和一些实现类。

Java 集合可分为 Collection 和 Map 两种体系: 

Collection接口:单列数据,定义了存取一组对象的方法的集合

List:元素有序、可重复的集合(动态数组)

Set:元素无序、不可重复的集合

Map接口:双列数据,保存具有映射关系“key-value对”的集合

6.2 Collection接口

Collection是所有单列集合的父接口,它定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。

表6-1 Collection接口的常用方法

方法声明功能描述
boolean add (Object o)向集合中添加一个元素
boolean addAll(Collection c)将指定Collection中的所有元素添加到该集合中
void clear()删除该集合中的所有元素
boolean remove(Object o)删除该集合中指定的元素
boolean removeAll(Collection c)删除指定集合中的所有元素
boolean isEmpty()判断该集合是否包含某个元素
boolean contains(Object o)判断该集合中是否包含某个元素
boolean containsAll(Collection c)判断该集合中是否包含指定集合中的所有元素
lterator iterator()返回在该集合的元素上进行迭代的迭代器(lterator),用于遍历该集合的所有元素
int size()获取该集合元素个数

 6.3 List接口

6.3.1 List接口简介

List接口继承自Collection接口,是单列集合的一个重要分支。List集合允许出现重复的元素,所有的元素是以一种线性方式进行储存的,在程序中可以通过索引访问List集合中的指定元素。

List作为Collection集合的子接口,不但继承了Collection接口中的全部方法。

表6-2 List集合的常用方法

方法声明功能描述
void add(int index,Object element)将元素element插入在List集合的index处
boolean addAll(int index,Collection c)将集合c所包含的所有元素插入到List集合的index处
Object get(int index)返回集合索引index处的元素
Object remove(int index)删除集合索引index处的元素
Object set(int index,Object element)将集合索引index处元素替换成element对象,并将替换后的元素返回
int indexOf(Object o)返回对象o在List集合中出现的位置索引
int lastlndexOf(Object o)返回对象o在List集合中最后一次出现的位置索引
List subList(int fromindex,int tolndex)返回从索引fromlndex(包括)到tolndex(不包括)处的所有元素组成的子集合

6.3.2 ArrayList集合

ArrayList是List接口的一个实现类, 它是程序中最常见的一种集合。 在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList 会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。


ArrayList集合中大部分方法都是从父类Collection和List继承过来的,其中add ( )方法和get( )方法分别用于实现元素的存人和取出。

案例学习 6-1

import java.util.*;
public class Example01 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList(); // 创建ArrayList集合
        list.add("张三");                    // 向集合中添加元素
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        // 获取集合中元素的个数
        System.out.println("集合的长度:" + list.size()); 
        // 取出并打印指定位置的元素
        System.out.println("第2个元素是:" + list.get(1)); 
    }
}

 运行结果→

集合的长度:4

第二个元素是:李四

由于ArrayList 集合的底层使用一个数组来保存元素 ,在增加或删除指定位置的元素时,会创建新的数效率比较低,因此不适合做大量的增加或删除操作。因为这种数组的结构允许程序通过索引的方式来访问元素,所以使用ArrayList集合查找元素很便捷。

6.3.3 LinkedList集合

                      (a)新增元素                                                 (b)删除元素

通过两张图片描述了LinkedList集合新增元素和删除元素的过程,其中,左边图为增加元素,图中的元素1和元素2集合彼此位前后关系,在它们之间新增一个元素时,只需要让元素1记住它后面的元素是新元素,让元素2记住它前面的元素为新元素就可以了。右边为删除元素,要想删除元素1和元素2之间的元素3,只需要让元素1与元素2变成前后关系就可以。由此可见Linked LIst集合具有删除元素效率高的特点。

表6-3 LinkedList集合增加和删除元素的特有方法

方法声明功能描述
void add(int index,E element)在此集合中指定的位置插入指定的元素
void addFirst(Object o)将指定元素插入此集合的开头
void addLast(Object o)将指定元素添加到此集合的结尾
Object getFirst()返回此集合的最后一个元素
Object getLast()返回此集合的最后一个元素
Object removeFirst()删除并返回此集合的第一个元素
Object removeLast()删除并返回此集合的最后一个元素

 案例学习 6-2

import java.util.*;
public class Example02 {
    public static void main(String[] args) {
        LinkedList link = new LinkedList();   // 创建LinkedList集合
        link.add("张三");
        link.add("李四");
        link.add("王五");
        link.add("赵六");
        System.out.println(link.toString()); // 取出并打印该集合中的元素
        link.add(3, "Student");                 // 向该集合中指定位置插入元素
        link.addFirst("First");                 // 向该集合第一个位置插入元素
        System.out.println(link);
        System.out.println(link.getFirst()); // 取出该集合中第一个元素
        link.remove(3);                          // 移除该集合中指定位置的元素
        link.removeFirst();                     // 移除该集合中第一个元素
        System.out.println(link);
    }
}

运行结果→ 

[张三,李四,王五,赵六]

[First,张三,李四,王五,Student,赵六]

First

[张三,李四,Student,赵六]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值