集合体系结构

集合体系结构

集合是一种容器,用来存储对象信息

所有集合类都位于 java.util 包下,支持多线程的集合位于 java.util.concurrent 包下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kgTIr1vB-1631418503370)(M:\typora-img\image-20210908173245404.png)]

集合中有两个重要的根接口:Collection(单列)、Map(双列)

Collection

Collection 的子接口有:List、Set、Queue

List:元素有序、可重复、支持索引操作

  • ArrayList:非线程安全;可扩容数组
  • LinkedList:非线程安全;双向链表
  • Vector:线程安全

Set:元素无序、不可重复、无索引

  • HashSet:取出顺序固定;非线程安全
  • TreeSet:自然顺序(可自定义)
  • LinkedHashSet:有序(存储取出顺序一致)

常用方法

方法说明
boolean add(E e)添加一个元素
boolean addAll(Collection<? extends E> c)添加一个集合
void clear()清空集合
boolean contains(Object o)判断是否包含指定元素
boolean containsAll(Collection<?> c)判断是否包含指定集合
boolean equals(Object o)判断相等
int hashCode()返回集合的哈希码值
boolean isEmpty()判断是否为空
Iterator<E> iterator()返回集合的迭代器
boolean remove(Object o)删除指定元素
boolean removeAll(Collection<?> c)删除指定集合
boolean removeIf(Predicate<? super E> filter)删除满足谓词的元素
int size()返回元素个数
Object[] toArray()返回集合的元素数组
public static void main(String[] args) {
    Collection<String> collection = new ArrayList<>();

    collection.add("1");
    collection.add("2");

    collection.remove("1");
    collection.remove(1); 

    boolean contains = collection.contains("1");
    int size = collection.size();
    boolean empty = collection.isEmpty();
    collection.clear();
}

遍历

  1. 将集合转换为数组后遍历
public static void main(String[] args) {
    Collection<String> collection = new ArrayList<>();
    collection.add("1");
    collection.add("2");

    Object[] objects = collection.toArray();
    for (Object object : objects) {
        System.out.println(object);
    }
}
  1. 使用迭代器遍历
  • next:返回下一个元素
  • hasNext:判断是否有下一个元素
  • remove:删除集合里上一次 next 方法返回的元素
public static void main(String[] args) {
    Collection<String> collection = new ArrayList<>();
    collection.add("1");
    collection.add("2");

    // 获取迭代器
    Iterator<String> iterator = collection.iterator();

    // 遍历
    while (iterator.hasNext()) {
        String next = iterator.next();
        System.out.println(next);
    }
}

Map

Map 是双列集合,用来存储键值对

主要实现类:HashMap、HashTable、TreeMap

Collections

Collections 类是针对集合操作的工具类

方法说明
reverse(List<T> list)反转集合中的元素
sort(List<T> list)升序排序
shuffle(List<T> list)对 List 随机排序,即洗牌
sort(List<T> list, Comparator<? super T> c)根据指定的比较器对指定的列表进行排序
swap(List<?> list, int i, int j)交换
max(Collection coll)按自然顺序找最大
max(Collection coll, Comparator comp)按比较器的规则找最大
min(Collection coll)按自然顺序找最小
min(Collection coll, Comparator comp)按比较器的规则找最小
frequency(Collection<?> c, Object o)返回指定集合中与指定对象相等的元素数
copy(List<? super T> dest, List<? extends T> src)将所有元素从一个列表复制到另一个列表中
replaceAll(List<T> list, T oldVal, T newVal)将列表中一个指定值的所有出现替换为另一个
public static void main(String[] args) {

    List<Integer> list = new ArrayList<>();

    list.add(1);
    list.add(2);
    list.add(3);

    Collections.sort(list);
    Collections.reverse(list);
    Collections.shuffle(list);
    
    Collections.sort(list, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, teger o2){
            // int num = s1.getAge() - s2.getAge();
            // int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
            return o2 - o1; // 降序
        }
    })
}

集合与数组的区别

数组的长度是确定且不可更改的,集合可以进行动态扩容

数组只能存储同一类型的元素,集合可以存储多种类型的元素以及具有映射关系的键值对

数组可以存储基本类型,也可以存储引用类型;集合只能存储引用类型

Collection 与 Collections 的区别

Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,是 List、Set 的父接口

Collections 是一个工具类,它包含了很多静态方法,比如提供的排序方法 sort,不能被实例化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值