07_Collection集合1

本文详细介绍了Java中的Collection框架,包括单列集合(如ArrayList)和双列集合(如Map),以及它们的特点、常用方法和遍历方式,如迭代器、增强for循环和lambda表达式的应用。
摘要由CSDN通过智能技术生成

集合体系结构

Collection 代表单列集合,每个元素(数据)只包含一个值

Map 代表双列集合,每个元素包含两个值(键值对)

Collection 框架集合

Collection 概述

List 系列集合:添加的元素是有序、可重复、有索引

  • ArrayList、LinekdList:有序、可重复、有索引

Set 系列集合:添加的元素是无序、不重复、无索引

  • HashSet:无序、不重复、无索引
  • LinkedHashSet:有序、不重复、无索引
  • TreeSet:按照大小默认升序排序、不重复、无索引
Collection 常用方法

Collection 是单列集合的祖宗,它的方法是全部单列集合都会继承的

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class Test {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();  // 多态写法
        // 1. 添加元素,添加成功返回true
        c.add("java1");
        c.add("java1");
        c.add("java2");
        c.add("java2");
        c.add("java3");
        System.out.println(c);  // [java1, java1, java2, java2, java3]

        // 2. 清空集合的元素
//      c.clear();

        // 3. 判断集合是否为空
        System.out.println(c.isEmpty());  // false

        // 4. 获取集合的大小
        System.out.println(c.size());  // 5

        // 5. 判断集合中是否包含某个元素
        System.out.println(c.contains("java1"));  // true

        // 6. 删除某个元素:如果有多个重复元素默认删除最前面的第一个
        System.out.println(c.remove("java1"));  // true
        System.out.println(c);  // [java1, java2, java2, java3]

        // 7. 把集合转换为数组
        Object[] arr = c.toArray();
        System.out.println(Arrays.toString(arr));  // [java1, java2, java2, java3]

        String[] arr2 = c.toArray(new String[c.size()]);
        System.out.println(Arrays.toString(arr));  // [java1, java2, java2, java3]

        // 8. 把一个集合的全部数据倒入到另一个集合中去
        Collection<String> c1 = new ArrayList<>();
        c1.add("java11");
        c1.add("java22");
        Collection<String> c2 = new ArrayList<>();
        c2.add("java33");
        c2.add("java44");
        c1.addAll(c2);
        System.out.println(c1);  // [java11, java22, java33, java44]
        System.out.println(c2);  // [java33, java44]
    }
}
Collection 的遍历方式

迭代器

迭代器是用来遍历集合的专用方式(数组没有迭代器),在 Java 中迭代器的代表是 Iterator

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

public class Test {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("Jack");
        c.add("Peter");
        c.add("Tomato");
        c.add("wang");
        System.out.println(c);  // [Jack, Peter, Tomato, wang]

        // 使用迭代器遍历集合
        // 1. 从集合对象中获取迭代器对象
        Iterator<String> iter = c.iterator();
//        System.out.println(iter.next());  // Jack
//        System.out.println(iter.next());  // Peter
//        System.out.println(iter.next());  // Tomato
//        System.out.println(iter.next());  // wang
//        System.out.println(iter.hasNext());  // 判断当前迭代位置是否有元素存在 false
//        System.out.println(iter.next());  // 出现异常 NoSuchElementException

        // 2. 结合循环与迭代器,进行集合的遍历
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }

    }
}

增强 for

"增强for"可以用来遍历集合或者数组,"增强for"遍历集合,本质就是迭代器遍历集合的简化写法

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

public class Test {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("Jack");
        c.add("Peter");
        c.add("Tomato");
        c.add("wang");
        System.out.println(c);  // [Jack, Peter, Tomato, wang]

        // 使用增强for遍历集合,或者遍历数组!!
        for (String ele : c) {
            System.out.println(ele);
        }

        int[] arr = {1, 2, 3, 4, 5};
        for (int num : arr) {
            System.out.println(num);
        }

    }
}

lambda 表达式

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class Test {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("Jack");
        c.add("Peter");
        c.add("Tomato");
        c.add("wang");
        System.out.println(c);  // [Jack, Peter, Tomato, wang]

        // 方式一(未经过简化)
        c.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        // 方式二(lambda简化版)
//      c.forEach(s -> System.out.println(s));
        c.forEach(System.out::println);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值