单列集合(Collection,List,Set集合的详细介绍)

这篇博客详细介绍了Java集合框架中的单列集合,包括Collection接口及其子接口List和Set。讲解了Collection的常用方法、集合与数组的转换,并深入探讨ArrayList、Vector和LinkedList的特性和方法。此外,还讨论了HashSet、LinkedHashSet和TreeSet的实现及排序原理。
摘要由CSDN通过智能技术生成

目            录

一.集合整体的体系

1.Collection集合体系的相关介绍

2.单列表集合的工具类Collections类

3.Collection接口和Conllections工具类的区别

二.集合中的根接口:Collection接口

1.Collection接口中的方法

2.遍历集合(用根接口的迭代器iterator();)

3.集合与数组的互转

集合转换为数组:

数组转换为集合:(asList())

三.Collection的子接口List接口

 1.List集合

2.List集合中特有的方法

3. 遍历List集合

四 .LIst接口的实现类

1.ArrayList集合

ArrayList集合特有的方法

ArrayList集合和数组的区别

2.Vector集合

Vector集合特有的方法

3.LinkedList集合

LinkedList集合中的特有方法

poll方法与pop方法有什么区别?

五.Collection的子接口Set接口中的实现类

1.HashSet集合(元素无序且唯一)

2.LinkedHashSet集合(元素有序且唯一)

3.TreeSet集合(元素唯一且可对元素进行排序)

自然排序

比较器排序


一.集合整体的体系

1.Collection集合体系的相关介绍

Collection集合体系中的集合皆为单列集合.Map集合才是双列集合(后面会详细介绍的!).

        Colletion是集合的根接口,其子接口List和Set分别继承根接口.而ArrayList集合,LinkedList集合以及Vector集合是List集合的实现类.HashSet集合,LinkedHashSet集合以及TreeSet集合是Set集合的实现类.Collection,List,Set接口中的方法,其相对应的实现类也就可以直接使用,因为继承下来了.每个实现类不仅继承了其父接口中的方法,还都有自己独特的方法.

2.单列表集合的工具类Collections类

除此之外单列表集合还有一个针对集合操作的工具类Collections类,里面有很多常用的静态方法.

  • public static <T > void sort (List < T > list);                           对集合进行排序, 默认按照自然顺序
  • public static <T > int binarySearch (List < ? > list, T key);    二分查找查找集合中的元素
  • public static <T > T max(Collection < ? > coll);                    获取集合中的最大值
  • public static void reverse (List < ? > list);                             反转集合中的元素
  • public static void shuffle (List < ? > list);                               随机置换集合中的元素,即打乱集合中的元素位置
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Test1 {
    public static void main(String[] args) {
        //Collections工具类中给方法
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(24);
        list.add(25);
        list.add(22);
        list.add(20);
        list.add(26);


        //list.sort();
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer a, Integer b) {
                return a - b;
            }
        });

        System.out.println(list);     //[20, 20, 22, 24, 25, 26]

        //二分查找,元素必须有序
        int index = Collections.binarySearch(list, 24);
        System.out.println(index);  //3

        //获取最大最小值
        Integer max = Collections.max(list);
        Integer min = Collections.min(list);
        System.out.println(max);   //26
        System.out.println(min);   //20

        //反转
        Collections.reverse(list);
        System.out.println(list);      //[26, 25, 24, 22, 20, 20]

        //随机置换
        Collections.shuffle(list);
        System.out.println(list);       //[25, 20, 20, 22, 26, 24]

    }
}

3.Collection接口和Conllections工具类的区别

  • Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式.
  • Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,是一个工具类,服务于Java的Collection框架(单列表集合).
  • Collections 是一个包装类,Collection 表示一组对象,这些对象也称为 collection 的元素.

接下来就说一说各个接口与实现类啦!


 

二.集合中的根接口:Collection接口

 Collection接口是集合中的根接口,里面有很多方法,会被子接口以及实现类所继承和使用.

1.Collection接口中的方法

  • add(Object obj);                 往集合中添加元素
  • addAll(Collection c):          添加一个集合的元素 (给一个集合添加进另一个集合中的所有元素)
  • clear():                                移除所有元素
  • remove(Object o):              移除一个元素
  • removeAll(Collection c):   移除一个集合的元素(移除一个以上返回的就是true) 删除的元素是两个集合的交集元素 ,如果没有交集元素 则删除失败 返回false
  • contains(Object o):         判断集合中是否包含指定的元素  
  • containsAll(Collection c):  判断集合中是否包含指定的集合元素(这个集合 包含 另一个集合中所有的元素才算包含,才返回true)
  • isEmpty():                        判断集合是否为空
  • iterator();                            获取集合中的迭代器,通常用来遍历集合.
  • size():                                元素的个数,也就是集合的长度
  • retainAll(Collection c):       获取两个集合的交集元素放在集合中,返回的布尔值表示的是A集合是否发生变化 
  • toArray();                           把集合转换为数组

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {
    public static void main(String[] args) {
        //Collection
        Collection c1 = new ArrayList(); //多态,ArrayList是实现类
        //往集合中添加元素
        c1.add("aaa");
        c1.add("bbb");
        c1.add("ccc");
        c1.add("ddd");
        c1.add("eee");

        Collection c2 = new ArrayList();
        c2.add("aaa");
        c2.add("bbb");
        c2.add("ccc");


        //集合只能存储引用数据类型的元素。
        int num = 100;
        c1.add(num); //Integer 自动装箱
        c1.add(3.25);//Double
        System.out.println(c1);        //[aaa, bbb, ccc, ddd, eee, 100, 3.25]

        boolean b = c1.addAll(c2);
        System.out.println(b);         //true

        //删除集合中的某个元素
        boolean b2 = c1.remove("aaa");
        if (b2) {
            System.out.println(c1);    //[bbb, ccc, ddd, eee, 100, 3.25, aaa, bbb, ccc]
        }



        //c1 会删除掉两个集合的交集元素,c2的元素不影响。
        boolean b3 = c1.removeAll(c2); //如果有交集元素被删除,返回true,没有交集元素被删除返回false
        System.out.println(b3);        //true
        System.out.println(c1);        //[ddd, eee, 100, 3.25]
        System.out.println(c2);        //[aaa, bbb, ccc]

        //a集合.containsAll(b集合);  看a集合是否包含了所有b集合的元素,如果包含了返回true ,如果有一个没有包含就会false
        boolean b4 = c1.containsAll(c2);
        System.out.println(b4);        //false

        //获取长度的方法
        int size = c1.size();
        System.out.println(size);      //4

        //清空集合
        System.out.println(c2);     //[aaa, bbb, ccc]
        c2.clear();
        System.out.println(c2);     //[]

    }
}

2.遍历集合(用根接口的迭代器iterator();)

package com.xingyun.test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {
    public static void main(String[] args) { 
       
        //遍历集合
        Student s1 = new Student("张三", 23);
        Student s2 = new Student("李四", 24);
        Student s3 = new Student("王五", 25);

        Collection list = new ArrayList();
        list.add(s1);
        list.add(s2);
        list.add(s3);

        //获取迭代器,来遍历集合中的元素
        //接口 Iterator<E> 对 collection 进行迭代的迭代器。
        //boolean hasNext()
        //           如果仍有元素可以迭代,则返回 true。
        //  E next()
        //           返回迭代的下一个元素。

        Iterator iterator1 = list.iterator();
        while (iterator1.hasNext()) {
            Student stu = (Student) iterator1.next();
            System.out.println(stu.getName() + "====" + stu.getAge());
        }

        //结果:
        /*
        张三====23
        李四====24
        王五====25

         */

    }
}

3.集合与数组的互转

集合转换为数组:

  • 方法一: 遍历集合放入到数组中
  • 方法二: toArray()方法

数组转换为集合:(asList())

  • 第一种情况:面对一个数组时,是把数组中的元素放入到集合中
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

naoguaziteng

谢谢友友的打赏!一起努力吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值