Java——集合

1.集合中主要接口的概述

List接口、 Set接口、 Map接口、 Collection接口主要特征:

①Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用

②List接口实现了Collection接口,List接口允许存放重复的对象,按照对象的插入顺序排列

③Set接口实现了Collection接口,Set接口允许存放重复的对象,按照自身内部的排序规则排列

④Map接口以键值对(key-value)的形式存放对象,其中键对象不可以重复,值对象可以重复,按照自身内部的排序规则排序

2.Collection接口

Collection接口定义的常用方法如下表所示:

(1)使用addAll()方法向集合中添加对象。
public static void main(String[] args) {
        String a = "A";
        String b = "B";
        String c = "C";
 
        Collection<String> list = new ArrayList<String>();
        list.add(a);   // 通过add(E obj)方法添加指定对象到集合中
        list.add(b);
 
        Collection<String> list2 = new ArrayList<String>();
        list2.addAll(list);   // 通过addAll(Collection<? extends E> col)方法添加指定集合中的所有对象到该集合中
        list2.add(c);
 
        Iterator<String> it = list2.iterator(); // 通过iterator()方法序列化集合中的所有对象
        while (it.hasNext()) {
            String str = it.next(); // 因为对实例it进行了泛化,所以不需要进行强制类型转换
            System.out.println(str);
        }
    }
(2)使用removeAll()方法从集合中移除对象
public static void main(String[] args) {
        String a = "A", b = "B", c = "C";
        Collection<String> list = new ArrayList<String>();
        list.add(a);
        list.add(b);
        Collection<String> list2 = new ArrayList<String>();
        list2.add(b);
        list2.add(c);
 
        // 通过removeAll()方法从该集合中移除同时包含在指定集合中的对象,并获得返回信息
        boolean isContains = list.removeAll(list2);
        System.out.println(isContains);
 
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String str = it.next();
            System.out.println(str);
        }
    }
(含list2.add(b);语句)                           (不含list2.add(b);语句)

(3)使用toArray(T[] t)方法用来获得一个包含所有对象的指定类型的数组。
注意:toArray(T[] t)方法的入口参数必须为数组类型的实例,并且必须已经被初始化,它用来指定欲获得数组的类型,如果对调用toArray(T[] t)方法的实例进行了泛化,还要求入口参数的类型必须符合泛化类型。
 
public static void main(String[] args) {
        String a = "A", b = "B", c = "C";
        Collection<String> list = new ArrayList<String>();
        list.add(a);
        list.add(b);
        list.add(c);
        String strs[] = new String[1]; // 创建一个String型数组
        String strs2[] = list.toArray(strs); // 获得一个包含所有对象的指定类型的数组
        for (int i = 0; i < strs2.length; i++) {
            System.out.println(strs2[i]);
        }
    }
3.List集合

①List包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法,如下表所示:

②List接口的常用实现类有ArrayList(数组结构保存对象)和LinkedList(链表结构保存对象),在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList,例如:

数组结构的优点是便于对集合进行快速的随机访问,如果经常需要根据索引位置访问集合中的对象,使用由ArrayList类实现的List集合的效率较好。
链表结构的优点是便于向集合中插入和删除对象,如果经常需要向集合中插入对象,或者从集合中删除对象,使用由LinkedList类实现的List集合的效率较好。
(1)add(int index, Object obj)方法和set(int index, Object obj)方法
注意:索引值都是从0开始
public static void main(String[] args) {
        String a = "A", b = "B", c = "C", d = "D", e = "E";
        List<String> list = new LinkedList<String>();
        list.add(a);
        list.add(e);
        list.add(d);
        list.set(1, b); // 将索引位置为1的对象e修改为对象b
        list.add(2, c); // 将对象c添加到索引位置为2的位置
      //遍历List集合
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
 
提示:因为List集合可以通过索引位置访问对象,所以还可以通过for循环遍历List集合。因此上面遍历集合的代码可以用下替换:
for(int i=0;i<list.size();i++)
{system.out.println(list.get(i);}


(2)indexOf(Object obj)方法和lastIndexOf(Object obj)方法
注意:前者是获得指定对象的最小的索引位置,后者是获得指定对象的最大的索引位置,前提条件是指定的对象在List集合中具有重复的对象,否则如果在List集合中有且仅有一个指定的对象,则通过这两个方法获得的索引位置是相同的。
public static void main(String[] args) {
        String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";
        List<String> list = new ArrayList<String>();
        list.add(a); // 索引位置为 0
        list.add(repeat); // 索引位置为 1
        list.add(b); // 索引位置为 2
        list.add(repeat); // 索引位置为 3
        list.add(c); // 索引位置为 4
        list.add(repeat); // 索引位置为 5
        list.add(d); // 索引位置为 6
        System.out.println(list.indexOf(repeat));
        System.out.println(list.lastIndexOf(repeat));
        System.out.println(list.indexOf(b));
        System.out.println(list.lastIndexOf(b));
    }


3.1使用LinkedList类

LinkedList类还根据采用链表结构保存对象的特点,提供了几个专有的操作集合的方法,如下表所示。


--------------------- 
作者:Flora_SM 
来源:CSDN 
原文:https://blog.csdn.net/Flora_SM/article/details/85088226 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值