类集Collection相关、List

类集:
类集的产生解决数组长度固定问题,所以说,他就是一个动态数组
集合类下保存数据的接口有Collection和Map,今天主要回顾Collection
Collection:
首先来说一说Collection和Collections
Collection:集合类的单个对象保存的顶层父接口
Collections:集合类的工具类,其中提供了一系列静态方法,包括有排序、反转等操作

public static void main(String[] args) {
        List<Integer> list  = new ArrayList<>();
        Collections.addAll(list,1,3,5,6,8,9);
        list.forEach(System.out::print);
        System.out.println();
        //取得Stream对象
        Stream<Integer> stream = list.stream();
        //数据过滤,统计集合中所有能被2整除的元素的个数
        System.out.println(stream.filter(e -> e % 2 == 0).count());

        Stream<Integer> stream1 = list.stream();
        System.out.println(stream1.max(Integer::compareTo).get());
    }

下面详细介绍Collection,首先先看一下Collection接口的继承关系:
在这里插入图片描述
Collection下的接口:List、Set,一般使用List接口较多
Collection接口提供的核心方法:
add(T t):向类集中添加元素
iterator():取得类集的迭代器
List:
List是Collection的子接口,具备了Collection的所有方法,还扩展了两个重要方法(List独有)

public  E  get(int  index)//根据索引下标取得保存的数据
public  E  set(int  index,E  element)//根据索引下标更新数据,返回修改前的值

List接口有三个重要子类:ArrayList、Vector、LinkedList。这三个子类在使用时没有任何区别。
ArrayList、Vector、LinkedList关系和区别
相同点:都是List接口下的子类
不同点:
1.LinkedList底层是链表实现,ArrayList、Vector底层是数组实现
因为Linkedlist底层链表,所以从初始化、扩容、遍历上说下ArrayList、Vector的不同:
2.ArrayList采用懒加载策略,在构造方法阶段并不初始化对象数组,在第一次 添加元素时才初始化对象数组,大小为10.
Vector在无参构造执行后将对象数组大小初始化为10
ArrayList扩容时,新数组大小变为原数组的1.5倍
Vector扩容时,新数组大小变为原数组的2倍
Vector应用较老的迭代器Enumeration, ArrayList不支持
3.性能方面:
ArrayList采用异步处理,线程不安全,效率较高
Vector采用sychronized同步方法,线程安全,但性能很低(读读互斥)
LinkedList采用异步处理,线程不安全,频繁在任意位置进行插入与删除使用LinkeList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值