集合框架(一)

集合体系概述

集合体系结构

  • Collection代表单列集合,每个元素(数据)只包含一个值。
  • Map代表双列集合,每个元素包含两个值(键值对)。

Collection集合体系

Collection集合特点

  • List系列集合:添加的元素是有序、可重复、有索引。
    • ArrayList、LinkedList:有序、可重复、有索引。
  • Set系列集合:添加的元素是无序、不重复、无索引。
    • HashSet:无序、不重复、无索引。
    • LinkedHashSet:有序、不重复、无索引。
    • TreeSet:按照大小默认升序排序、不重复、无索引。

Collection的常用方法

  • Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。
方法名 说明
public boolean add(E e) 添加元素,添加成功返回true
public void clear() 清空集合的元素
public boolean isEmpty() 判断集合是否为空,为空返回true,反之
public int size() 获取集合的大小
public boolean contains(Obijec obj) 判断集合是否包含某个元素
public boolean remove(E e) 删除某个元素:如果有多个重复元素默认删除前面的第一个
public Object[] toArray() 把集合转换成数组
java 复制代码
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<>(); // 多态写法
        // public boolean add(E e)  添加元素,添加成功返回true
        c.add("java1");
        c.add("java2");
        c.add("java2");
        c.add("java3");
        System.out.println(c);

        // public void clear()  清空集合的元素
        c.clear();
        System.out.println(c);

        // public boolean isEmpty()  判断集合是否为空,为空返回true,反之
        System.out.println(c.isEmpty());

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

        // public boolean contains(Obijec obj)  判断集合是否包含某个元素
        System.out.println(c.contains("java1"));

        // public boolean remove(E e)  删除某个元素:如果有多个重复元素默认删除前面的第一个
        c.remove("java1");
        System.out.println(c);

        // public Object[] toArray()  把集合转换成数组
        Object[] arr = c.toArray();
        System.out.println(Arrays.toString(arr));

        System.out.println("----------------------------");
        // 把一个集合中的全部数据倒入到另一个集合中去
        Collection<String> c1 = new ArrayList<>();
        c1.add("java1");
        c1.add("java2");
        Collection<String> c2 = new ArrayList<>();
        c2.add("java3");
        c2.add("java4");
        c1.addAll(c2);  //就是把c2中的数据全部倒入到c1中去,c2的内容不变
        System.out.println(c1);
        System.out.println(c2);
    }
}

Collection的遍历方式

迭代器

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

Collection集合获取迭代器的方法

Iterator迭代器中的常用方法

java 复制代码
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("张三");
        c.add("李四");
        c.add("王五");
        c.add("赵六");

        Iterator<String> it = c.iterator();

        while (it.hasNext()){
            String ele = it.next();
            System.out.println(ele);
        }
    }
}

增强for循环

格式:

  • 增强for可以用来遍历集合或者数组。
  • 增强for遍历集合,本质就是迭代器遍历集合的简化写法。
java 复制代码
import java.util.ArrayList;
import java.util.Collection;

public class Test {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("张三");
        c.add("李四");
        c.add("王五");
        c.add("赵六");

        String[] arr = {"阿瓦","阿萨","斯特"};

        for (String ele : c){
            System.out.println(ele);
        }

        for (String ele2 : arr){
            System.out.println(ele2);
        }
    }
}

Lambda表达式

Lambda表达式遍历集合

  • 得益于JDK 8 开始的新技术Lambda表达式,提供了一种更简单、更直接的方式来遍历集合。

需要使用Collection的如下方法来完成

java 复制代码
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("张三");
        c.add("李四");
        c.add("王五");
        c.add("赵六");

//        c.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
//
//        c.forEach((String s) -> {
//                System.out.println(s);
//        });
//
//        c.forEach( s -> System.out.println(s));

        c.forEach(System.out::println);
    }
}

案例:遍历集合中的自定义对象

需求:展示多部电影信息

Movie类

java 复制代码
public class Movie {
    private String name;
    private double score;
    private String actor;

    public Movie() {
    }

    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}

Test类

java 复制代码
import java.util.ArrayList;
import java.util.Collection;

public class Test {
    public static void main(String[] args) {
        Collection<Movie> movies = new ArrayList<>();
        movies.add(new Movie("阿甘正传",9.5,"汤姆·汉克斯"));
        movies.add(new Movie("霸王别姬",9.6,"张国荣、张丰毅"));
        movies.add(new Movie("肖申克的救赎",9.7,"罗宾斯"));

        for (Movie movie : movies) {
            System.out.println("电影名:" + movie.getName());
            System.out.println("评分:" + movie.getScore());
            System.out.println("主演:" + movie.getActor());
            System.out.println("-------------------------------");
        }
    }
}
相关推荐
hdsoft_huge35 分钟前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘1 小时前
39.网络流入门
开发语言·网络·c++·算法
雨白1 小时前
Java 多线程指南:从基础用法到线程安全
android·java
Hungry_Shark1 小时前
IDEA版本控制管理之使用Gitee
java·gitee·intellij-idea
赛姐在努力.1 小时前
《IDEA 突然“三无”?三秒找回消失的绿色启动键、主菜单和项目树!》
java·intellij-idea
未来之窗软件服务2 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
猎板PCB黄浩2 小时前
从废料到碳减排:猎板 PCB 埋容埋阻的绿色制造革命,如何实现环保与性能双赢
java·服务器·制造
ZzzK,2 小时前
JAVA虚拟机(JVM)
java·linux·jvm
西红柿维生素2 小时前
JVM相关总结
java·jvm·算法
小冯记录编程2 小时前
C++指针陷阱:高效背后的致命危险
开发语言·c++·visual studio