Java——集合(List)

1.集合的体系结构

JDK在1.0版本中,提供了很少的集合容器,在升级到1.2版本后,为了更多的需求,出现了集合框架,有了更多的容器完成不同的需求

以每一个容器的数据结构不一样为容器的区分方式

不同的容器进行不断的向上抽取,最后形成了一个集合框架,这个框架就是 Collection 接口。在
Collection 接口定义着集合框架中最最共性的内容

2.什么是迭代 

由于集合容器有很多,每个容器都有自身的数据存储结构,即每个容器自身最清楚自己中数据是
如何存储的,容器这么多,每个容器数据存储又不相同,这时就在它们之间找取出元素的共性进
行了抽取,抽取出集合容器取出元素的共同特点。
在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还
有就再取出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代

3.List

一个有序集合(序列),此接口的用户在列表中的每个元素都被插入的地方有精确的控制,用户可以通过他们的整数索引(也就是在列表中的位置)访问元素,并在列表中搜索元素,与 set 不同,列表通常允许重复元素

List 方法

void add(int index, E element) :在列表的指定位置插入指定元素(可选操作)
boolean addAll(int index, Collection<? extends E> c) :将指定 collection 中的所有元素都插
入到列表中的指定位置
E get(int index) :返回列表中指定位置的元素
int indexOf(Object o) :返回此列表中第一次出现的指定元素的索引;如果此列表不包含该
元素,则返回 -1
int lastIndexOf(Object o) :返回此列表中最后出现的指定元素的索引;如果列表不包含此元
素,则返回 -1
ListIterator listIterator() :返回此列表元素的列表迭代器(按适当顺序)
E remove(int index) :移除列表中指定位置的元素(可选操作)
E set(int index, E element) :用指定元素替换列表中指定位置的元素(可选操作)
List subList(int fromIndex, int toIndex) :返回列表中指定的 fromIndex (包括 )和
toIndex (不包括)之间的部分视图
default void sort(Comparator<? super E> c) :分类列表使用提供的 Comparator比较元素

4.List实现类

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有
元素
每个 ArrayList 实例都有一个 容量 。该容量是指用来存储列表元素的数组的大小。它总是至少
等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长
此实现不是同步的

使用 Collection 接口方法

public class CollectionDemo() {
    public static void main(String[] args) {
        method();
    }
    public static void method() {
        Collection<Integer> c1 = new ArrayList<>();
        //添加指定元素
        c1.add(1);
        //把 c1 中的所有元素添加到 c2 中
        Collection<Integer> c2 = new ArrayList<>();
        c2.addAll(c1);

        //判断指定元素是否在集合中,如果在返回true,否则返回false
        boolean contains = c1.contains(2); // false
        //判断指定集合是否在集合中,如果在返回true,否则返回false
        boolean containsAll = c2.containsAll(c1); // true

        //判断集合是否为空
        boolean empty = c1.isEmpty();
        
        //获取集合中的元素个数
        int size = c1.size();
        
        //删除集合中指定元素
        c1.remove(1);
        //删除集合中的所有元素
        c1.removeAll();
        //根据判断语句的结果来删除元素,若条件为真则执行删除,否则不执行删除
        c1.removeIf(e -> e == 4);

        //将集合转换为 Object 类型的数组
        Object[] array = c1.toArray();
        //将集合转换为指定类型的数组
        Integer[] tem = c1.toArray(new Integer[c1.size()]);
    }
}

 使用 List 接口方法

public class ListDemo {
    public static void main(String[] args) {
        addMethod();
    }
    private static void addMethod() {
        List<Integer> list = new ArrayList<>();
        // 添加元素
        list.add(1); 
        list.add(2);
        //将指定元素添加到指定位置,注意这种方法性能较差,因为存在数据移动问题
        list.add(0, 4);
        //将指定集合中的所有元素添加到集合的指定位置,性能差
        List<Integer> list1 = new ArrayList<>();
        list1.add(20);
        list.addAll(1, list1);

        //修改方法:set( 下标 , 修改后的值 )
        list1.set(0, 2);
        
        // indexOf 方法是从前向后在集合中查询指定元素,如果找到返回元素所在下标,如果找不到返回 -1
        int f = list.indexOf(2);
        System.out.println(f);
        f = list.indexOf(20);
        // lastIndexOf 方法是从后向前找,在集合中查询指定元素,如果找到返回元素所在下标,如果找不到返回 -1
        f = list.lastIndexOf(1);
        
        //获取指定下标位置的元素
        Integer num = list.get(0);
        
        //删除指定下标位置的元素
        Integer num2 = list.remove(0);  
    }
}

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值