Java重点 | Collection集合的子类

简介: 本文将对Collection集合子类全家桶进行详细的介绍解析,并且通过代码实战的方式带你更快的入门,希望能够帮助到您。

Collection集合的子类

List接口独有的常用方法

在这里插入图片描述
举例介绍

public class List接口常用方法 {
    public static void main(String[] args) {
        List list = new ArrayList();

        list.add("aa");
        list.add("bb");
        //add()在列表的指定位置上插入指定元素(第一个参数是下标)
        //这个方法使用不多,因为对于ArrayList集合来说效率不较
        list.add(1,"cc");

        //get()根据下标获取元素
        Object o = list.get(1);
        System.out.println(o);//cc

        //因为有下标,所以List集合有自己比较特殊的遍历方式
        //通过下标遍历。【List集合特有的方式,Set没有】
        for (int i = 0; i < list.size(); i++) {
            Object o1 = list.get(i);
            System.out.println(o1); //aa cc bb
        }

        //indexOf 获取指定对象第一次出现的索引
        int index = list.indexOf("cc");
        System.out.println(index); //1

        //lastIndexOf 获取指定对象最后一次出现的索引
        int index1 = list.lastIndexOf("bb");
        System.out.println(index1); //2

        System.out.println("======================");
        //remove:删除指定下标位置的元素。
        list.remove(0);
        for (int i = 0; i < list.size(); i++) {
            Object o1 = list.get(i);
            System.out.println(o1); // cc bb
        }

        //set:修改指定位置的元素
        list.set(1,"aaa");

        System.out.println("======================");

        for (int i = 0; i < list.size(); i++) {
            Object o1 = list.get(i);
            System.out.println(o1); // cc aaa
        }


    }
}

ArratList集合介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三种构造方法


/**
 * 三种构造方法
 */

public class ArratList集合 {
    public static void main(String[] args) {
        //无参构造 默认初始化容量为10
        List list = new ArrayList();

        //有参构造更改初始化容量为20
        List list1 = new ArrayList(20);

        //创建一个HashSet集合
        Collection c =new HashSet();
        c.add(1);
        c.add(2);
        c.add(6);
        c.add(4);

        //通过这个构造方法 可以将HashSet集合转换成List集合
        List list2 =new ArrayList(c);
        for (int i =0;i<list2.size();i++){
            System.out.println(list2.get(i));
        }
    }
}

LinkedList集合

在这里插入图片描述

### 链表的优缺点
在这里插入图片描述

常用方法

private static void domed01() {
        /*
            public void addFirst(E w):将指定元素添加到此列表的开头 此方法等效push
            public void addLast(E e):将指定元素添加到此列表的结尾  此方法等效于add
            public void push(E e):将元素推入此列表所表示发堆栈 此方法等效addFirst
         */

        // 创建LinkedList
        LinkedList<String> lin = new LinkedList<String>();
        // 使用add方法往集合添加元素
        lin.add("a");
        lin.add("b");
        lin.add("c");
        System.out.println(lin); // [a, b, c]

        //public void addFirst(E w):将指定元素添加到此列表的开头 此方法等效push
//        lin.addFirst("www");
        lin.push("www");
        System.out.println(lin); //[www, a, b, c]

        //public void addLast(E e):将指定元素添加到此列表的结尾 此方法等效于add
        lin.addLast("com");
        System.out.println(lin);//[www, a, b, c, com]
    }

    private static void domed02() {
        /*
            public E getFirst():返回此列表第一个元素
            public E getLast():返回此列表最后一个元素
         */

        // 创建LinkedList
        LinkedList<String> lin = new LinkedList<String>();
        // 使用add方法往集合添加元素
        lin.add("a");
        lin.add("b");
        lin.add("c");

//        lin.clear(); //清空集合中的元素,在获取集合中的元素会抛出NoSuchElementException
        //添加判断
        // public boolean isEmpty(): 如果列表不包含元素,则返回ture ;空的返回ture
        if (!lin.isEmpty()) { //!lin.isEmpty()添加取反,不是空的返回ture,才执行;是空的就不获取了
            String first = lin.getFirst();
            System.out.println(first); //a
            String last = lin.getLast();
            System.out.println(last); //c
        }

    }

    private static void domed03() {
        /*
            public E removeFirst(): 移除并返回此列表的第一个元素
            public E removeLast():移除并返回此列表的最后一个元素
            public E pop(): 从此列表所表示的堆栈处弹出一个元素。此方法相当于removeFirst
         */

        // 创建LinkedList
        LinkedList<String> lin = new LinkedList<String>();
        // 使用add方法往集合添加元素
        lin.add("a");
        lin.add("b");
        lin.add("c");
        System.out.println(lin); // [a, b, c]

        String s = lin.removeFirst();
//        String pop = lin.pop();
        System.out.println("被移除的以一个元素:"+s); //被移除的以一个元素:a
        String s1 = lin.removeLast();
        System.out.println("被移除的最后一个元素:"+s1); //被移除的最后一个元素:c
    }

Vector集合

在这里插入图片描述
在这里插入图片描述

HashSet集合

在这里插入图片描述
在这里插入图片描述
代码示例

public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        //使用add方法添加元素
        set.add(1);
        set.add(3);
        set.add(2);
        set.add(1);
        System.out.println(set); //[1, 2, 3]

        //使用迭代器遍历
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            Integer next = iterator.next();
            System.out.println(next);
        }

        //使用增强for
        for (Integer integer : set) {
            System.out.println(integer);
        }
    }

TreeSet集合

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

可变参数

在这里插入图片描述
代码示例

 public static void main(String[] args) {
//        int i = add();
//        int i = add(10);
//        int i = add(10,20);
        int i = add(10,20,30,40,50,60,70,80,90,100);
        System.out.println(i);
        aa(1,2.3,"iws");
    }
    /*
        定义计算(0-n)个整数和的方法
        已知:计算整数的和,数据类型已经确定int
        但是参数的个数不确定,不知道要计算几个整数的和,就可以使用可变参数

        调用add();方法,就会创建一个长度为0的数组,new int[0]
        调用add(10);方法,就会创建一个长度为1的数组,存储传递过来的参数 new int[]{10};
        调用add(10,20);方法,就会创建一个长度为2的数组,存储传递过来的参数 new int[]{10,20};
        调用add(10,20,30,40,50,60,70,80,90,100);方法,就会创建一个长度为10的数组,存储传递过来的参数
        new int[]{10,20,30,40,50,60,70,80,90,100};

        add(10);
     */
    public static int add(int...arr){
//        System.out.println(arr); //[I@7c30a502 底层是一个数组
//        System.out.println(arr.length);//0,1,2,10
        //定义一个初始化变量,记录累加和求和
        int sum = 0;
        //遍历数组,获取数组中的每一个元素
        for (int i : arr) {
            sum+=i;
        }
        //把求和结果返回
        return sum;
    }
    //可变参数终极写法
    public static void aa(Object...obj){
        System.out.println(obj.length);
    }
}
相关文章
|
2月前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
41 3
|
19天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
25 2
|
23天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
19天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
23天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
23天前
|
Java 开发者
|
2月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
60 5
|
2月前
|
安全 Java 程序员
Java集合之战:ArrayList vs LinkedList,谁才是你的最佳选择?
本文介绍了 Java 中常用的两个集合类 ArrayList 和 LinkedList,分析了它们的底层实现、特点及适用场景。ArrayList 基于数组,适合频繁查询;LinkedList 基于链表,适合频繁增删。文章还讨论了如何实现线程安全,推荐使用 CopyOnWriteArrayList 来提升性能。希望帮助读者选择合适的数据结构,写出更高效的代码。
64 3
|
23天前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
22 0
|
28天前
|
Java API Apache
java集合的组内平均值怎么计算
通过本文的介绍,我们了解了在Java中计算集合的组内平均值的几种方法。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。无论是使用传统的循环方法,还是利用Java 8的Stream API,亦或是使用第三方库(如Apache Commons Collections和Guava),都可以有效地计算集合的组内平均值。希望本文对您理解和实现Java中的集合平均值计算有所帮助。
28 0