集合框架(一)

news2024/11/20 4:58:03

集合体系概述

集合体系结构

  • 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()把集合转换成数组
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迭代器中的常用方法  

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遍历集合,本质就是迭代器遍历集合的简化写法。
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的如下方法来完成

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类

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类

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("-------------------------------");
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

主流进销存系统有哪些?企业该如何选择进销存系统?

主流进销存系统有哪些&#xff1f;企业该如何选择进销存系统&#xff1f; “永久免费”的软件&#xff0c;这个可能还真不太可能有。而且就算有&#xff0c;也只能说是相对免费。 因为要么就是数据存量有限&#xff0c;要么就是功能有限数据、信息都不保障&#xff0c;并且功…

最小矩阵宽度 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子短阵,要求子矩阵包含数组中所有的整数。 输入描述 第一行输入两个正整数 N, M 表示矩阵大小。 接下…

Go后端开发 -- 面向对象特征:结构体 继承 多态 interface

Go后端开发 – 面向对象特征&#xff1a;结构体 && 继承 && 多态 && interface 文章目录 Go后端开发 -- 面向对象特征&#xff1a;结构体 && 继承 && 多态 && interface一、Go的结构体1.结构体的声明和定义2.结构体传参 二、将…

嵌入式一开始要怎么学?

今日话题&#xff0c;嵌入式一开始要怎么学&#xff1f;废话不多说&#xff0c;我认为学习嵌入式编程无需观看视频&#xff0c;拥有好的文档比视频更有帮助。掌握一门编程语言是学好嵌入式的关键。现今有许多计算机编程语言可供选择&#xff0c;比如C语言和C等。如果你刚刚入门…

CDN(内容分发网络)和DNS(域名系统)的区别

CDN关注于提高网站的访问速度和性能&#xff0c;主要通过在全球范围内分布的服务器缓存内容来实现&#xff0c;而DNS则是将域名转换为IP地址的系统&#xff0c;是互联网上进行任何形式的数据交换和通信的基础。 CDN&#xff08;内容分发网络&#xff09; 目的&#xff1a;CDN的…

查看centos的CPU、内存、磁盘空间等配置信息

目录 查看CPU/proc/cpuinfo中的信息 查看内存/proc/meminfo中的信息 查看磁盘空间df 命令du命令使用fdisk命令 查看CPU /proc/cpuinfo中的信息 前置&#xff1a; [ltkjltkj front]$ cat /proc/cpuinfo| grep "physical id" physical id : 0 physical id : 0 physi…

GO——gin中间件和路由

中间件 参考&#xff1a;https://learnku.com/articles/66234 结构 中间件是函数中间件函数被放在调用链上调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考&#xff1a;go/pkg/mod/github.com/gin-gonic/ginv1.7.7/gin.go:506 通过path找到…

Qt根据单价计算总价与进制转换

1.相关说明 二进制、十进制、十六进制间的相互转换 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete …

学习JavaEE的日子 day12 构造方法 类的制作

Day12 需求&#xff1a;创建人类的对象&#xff0c;并操作对象 分析&#xff1a; 人类 - Person 属性&#xff1a;name、sex、age 方法&#xff1a;eat、sleep 场景&#xff1a;创建多个对象&#xff0c;去操作对象 //测试类&#xff1a;该类中有main方法&#xff0c;测试我们写…

进程切换和是Linux2.6内核中进程调度的算法

正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 进程切换 进程并发就需要做到进程切换&#xff0c;一个CPU一套寄存器但是需要运行的进程有很多…

KT148A语音芯片智能锁扩展语音地址以及如何支持大量小文件的打包

一、语音芯片应用于智能锁的需求 智能锁的语音播放需求中&#xff0c;有很多需要多国语言合并在一起的需求 其中语音文件数多&#xff0c;并且每个语音文件小的特点 如果使用OTP的语音芯片&#xff0c;就很麻烦&#xff0c;因为用户不可烧录&#xff0c;调试也很繁琐 同时大…

μ综合设计控制器

μ综合设计控制器是一种基于μ分析的控制器设计方法&#xff0c;用于提高控制器的鲁棒性和性能。μ分析是一种数学工具&#xff0c;用于描述和比较控制系统在不同参数变化下的性能。通过μ综合设计&#xff0c;可以综合运用各种控制策略&#xff0c;以达到更好的控制效果。 μ…

pycharm debug显示的变量过多

问题&#xff1a; https://blog.csdn.net/Hodors/article/details/117535731 解决方法&#xff1a; 把"Show console variables by default"前面的勾取消掉就行 参考&#xff1a; https://stackoverflow.com/questions/48969556/hide-console-variables-in-pychar…

C语言--质数算法和最大公约数算法

文章目录 1.在C语言中&#xff0c;判断质数的常见算法有以下几种&#xff1a;1.1.试除法&#xff08;暴力算法&#xff09;&#xff1a;1.2.优化试除法&#xff1a;1.3.埃拉托色尼筛法&#xff1a;1.4.米勒-拉宾素性检验&#xff1a;1.5.线性筛法&#xff1a;1.6.费马小定理&am…

k8s---配置资源管理

目录 配置资源管理的方式 secret pod如何来引用secret&#xff1f;&#xff1f;&#xff1f; 陈述式创建&#xff1a; 声明式创建 Secret创建加密文件 使用token挂载 环境变量使用 docker-registry ConfigMap 陈述式 热更新 总结&#xff1a; 配置资源管理的方式 …

OJAC近屿智能带你解读:AIGC必备知识之Lang Chain

Look&#xff01;&#x1f440;我们的大模型商业化落地产品&#x1f4d6;更多AI资讯请&#x1f449;&#x1f3fe;关注Free三天集训营助教在线为您火热答疑&#x1f469;&#x1f3fc;‍&#x1f3eb; Lang Chain, 是一种先进的语言模型链技术&#xff0c;旨在通过串联多个专业…

js逆向第21例:猿人学第20题新年挑战

文章目录 一、前言二、定位加密参数1、定位wasm加密2、反编译wasm3、定位sign加密三、代码实现四、参考文献一、前言 新春福利:抓取这5页的数字,计算加和并提交结果 二、定位加密参数 通过get请求地址可以看到需要搞定参数有page、sign、t如下图: 进入堆栈不难发现这样一…

互联网加竞赛 基于机器视觉的12306验证码识别

文章目录 0 简介1 数据收集2 识别过程3 网络构建4 数据读取5 模型训练6 加入Dropout层7 数据增强8 迁移学习9 结果9 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的12306验证码识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向…

驾驭车联网的力量:深入车联网网络架构

车联网&#xff0c;作为移动互联网之后的新风口&#xff0c;以网联思想重新定义汽车&#xff0c;将其从简单的出行工具演化为个人的第二空间。车联网涵盖智能座舱和自动驾驶两大方向&#xff0c;构建在网联基础上&#xff0c;犀思云多年深度赋能汽车行业&#xff0c;本文将从车…

极端恶劣天气数据集-

极端恶劣天气数据集是一个包含了各种极端天气事件的统计信息的数据集。这些事件包括暴雨、暴雪、台风、龙卷风等极端天气现象。该数据集提供了有关这些极端天气事件的时间、地点、持续时间、强度等详细信息。 这个数据集对于研究和分析极端天气现象的频率、趋势和影响具有重要…