首页 > 其他分享 >01集合结构体系

01集合结构体系

时间:2023-10-30 13:14:11浏览次数:27  
标签:体系 01 name age coll Student 集合 public

:集合体系结构

  • 集合分两大类:
    • Collection:单列集合,一次放入一个数据
    • Map:双列集合,一次放入一对数据

一、集合分两大类

  • Collection:单列集合,每次添加一个数据。
  • Map:双列集合,每次添加一对数据。

二、单列集合

  • 集合体系结构图:

    Collection1

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

    • 有序:存和取的顺序的是一样的。
    • 可重复:表示集合中存取的元素是可以重复的。
    • 有索引:我们可以通过索引去获取集合里面的每一个元素。
  • Set系列集合:添加的元素是:无序、不重复、无索引。

    • 无序:存和取的顺序有可能是不一样的。
    • 不重复:集合中不能存储重复的数据(可以利用这个特性进行数据的去重)。
    • 无索引:指的是我们不能通过集合去获取Set系列里面的元素。

三、Collection

  • Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。

    方法名称 说明
    public boolean add(E e) 把给定对象添加到当前集合中
    public void clear() 清空集合中所有的元素
    public boolean remove(E e) 把给定的对象在当前集合中删除
    public boolean contains(Object obj) 判断当前集合中是否包含给定的对象
    public boolean isEmpty() 判断当前集合是否为空
    public int size() 返回集合中元素的个数/集合的长度

    案例:

    package com.mycollection;
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class A01_CollectionDemo1 {
        public static void main(String[] args) {
            /*
            public boolean add(E e)             添加
            public void clear()                 清空
            public boolean remove(E e)           删除
            public boolean contains(Object obj) 判断是否包含
            public boolean isEmpty()            判断是否为空
            public int size()                   集合长度
    
    
            注意点:
                collection:是一个接口,我们不能直接创建它的对象。
                所以,现在我们学习它的方法时,只能创建他实现类的对象。
                实现类:ArrayList
             */
    
            //目的:为了学习Collection接口里面的方法
            //自己在做一些练习的时候,还是按照之前的方式去创建对象。
            Collection<String> coll = new ArrayList<>();
            //1.添加元素
            //细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列集合是允许有元素重复的
            //细节2:如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。
            //                                  如果当前要添加的元素已存在,方法返回false,表示添加失败。
            //                                  因为Set系列的集合不允许重复。
            coll.add("aaa");
            coll.add("bbb");
            coll.add("ccc");
            System.out.println(coll);
    
            //3.删除
            //细节1:因为collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。
            //细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false。
            //如果要删除的元素不存在,就会删除失败。
            coll.remove("aaa");
            System.out.println(coll);
    
            //4.判断元素是否包含
            //细节:底层是依赖equals方法进行判断是否存在的。
            //所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。
            boolean result = coll.contains("bbb");
            System.out.println(result);
    
    
    
    
            //2.清空
            coll.clear();
            System.out.println(coll);
        }
    }
    

    运行结果:

案例二:

package com.mycollection;

import java.util.Objects;

public class Student {
    private String name;
    private int age;


    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; //this是当前对象的引用
        if (o == null || getClass() != o.getClass()) return false;//当前对象里面的getClass和o对象里面的getClass
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);//equals方法通常用于比较两个对象的内容是否相同
    }


    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

测试类:

package com.mycollection;

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

public class A02_CollectionDemo2 {
    public static void main(String[] args) {
        //1.创建集合的对象
        Collection<Student> coll = new ArrayList<>();

        //2.创建三个学生对象
        Student s1 = new Student("zhangsan",23);
        Student s2 = new Student("leisi",22);
        Student s3 = new Student("wangwu",25);

        //3.把学生对象添加到集合当中
        coll.add(s1);
        coll.add(s2);
        coll.add(s3);

        //4.判断某一个学生对象是否包含。
        Student s4 = new Student("zhangsan",23);
        //如果同姓名和同年龄,就认为是同一个学生。
        //因为contains在底层依赖equals方法判断对象是否一致的。
        //如果存的是自定义对象,没有重写equals方法,那么默认使用Object类中的equals方法进行判断,而Object类中的方法,依赖地址值进行判断。
        //需求是:同姓名和同年龄,就认为是同一个学生。
        //所以,需要在javabean类中,重写equals方法就可以了。
        System.out.println(coll.contains(s4));

        //5.判断集合是否为空
        boolean result2 = coll.isEmpty();
        System.out.println(result2);

        //6.获取集合的长度
        int size = coll.size();
        System.out.println("集合的长度为:"+size);

    }
}

运行结果:

标签:体系,01,name,age,coll,Student,集合,public
From: https://www.cnblogs.com/ahbzbn/p/17797564.html

相关文章

  • 04List系列的集合
    List集合特点:有序:存和取的元素顺序一致有索引:可以通过索引操作元素可重复:存储的元素可以重复一、List集合的特有方法Collection的方法List都继承了List集合因为有索引,所以多了很多索引操作的方法。方法名称说明voidadd(intindex,Eelement)在此集......
  • Kaldi安装过程中遇到cub-1.8.0.tar.gz、sctk-20159b5.tar.gz、openfst-1.7.2.tar.gz三
    Kaldi安装过程中遇到cub-1.8.0.tar.gz、sctk-20159b5.tar.gz、openfst-1.7.2.tar.gz三个包下载不全产生报错的状况。从官网下载三个包,然后上传到Linux服务器kaldi/tools目录下,再运行Makefile即可。以下是三个包的下载链接cub-1.8.0.tar.gz下载链接:https://pan.baidu.com/s/1jX......
  • 01背包问题
    #include<iostream>#include<cmath>usingnamespacestd;#defineNUM4#defineRONG5//物品数量//物品价值intv[NUM]={2,4,5,6};//背包容量intw[NUM]={1,2,3,4};//二维表存储子问题intf[NUM+1][RONG+1];intmain(){ //初始化第一列的值为0 for(inti=0;i<NUM+1;i++){ ......
  • 01背包问题的js解决方式
    如果你有兴趣看这个相信你已经对背包问题有所了解,所以关于背包问题的描述,我就不写了。只记录一下自己对这个问题的一些看法和思考,于我而言,这个东西现在困扰我的是如何确定最优解。实质上关于背包问题网上的东西我大体都有看过,对于这个问题,常见的就是使背包重量动态增长,然后遍历每......
  • 面试必刷TOP101:16、删除有序链表中重复的元素-II
    一、题目二、题解importjava.util.*;publicclassSolution{publicListNodedeleteDuplicates(ListNodehead){//空链表if(head==null)returnnull;ListNoderes=newListNode(0);//在链表前加一个表头......
  • Xilinx VIvado学习-01 数值处理之乘法(有符号)
    Verilog数值处理,在处理减法的时候,需要注意溢出问题。实例:a*b=c 1modulesi_product(2inputsigned[9:0]a,3inputsigned[7:0]b,4outputsigned[17:0]product5);6assignproduct=a*b;7endmodule仿真代码:1modulesi_product_tb;2regsys_......
  • Xilinx VIvado学习-01 数值处理之乘法(无符号)
    Verilog数值处理,在处理减法的时候,需要注意溢出问题。实例:a*b=c 1`timescale1ns/1ps2//////////////////////////////////////////////////////////////////////////////////3//Company:4//Engineer:5//6//CreateDate:2023/10/2323:33:077//......
  • 『做题记录』[CF1601F]Two Sorts
    [CF1601F]TwoSortslink:https://codeforces.com/problemset/problem/1601/FDescription  有一个数列\(\{a_1,a_2,\ldots,a_n\}\)是一个\(1\simn\)的排列,且所有的数都按照字典序排序,现在给出整数\(n(1\leqn\leq10^{12})\),求\(\left(\sum_{i=1}^n((i-a_i)\bm......
  • python进阶14大模块200页知识体系md笔记,第3篇:linux命令进阶
    本完整笔记从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。完整版笔记直接地址:请移步这里......
  • # 学期2023-2024-1 20231401 《计算机基础与程序设计》第五周学习总结
    学期2023-2024-120231401《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第五周作业这个作业的目标自学教材:计算机科学概论第6章,C语言程序设计第4章并......