javase基础---集合之set

猪八戒1.0      2022-05-20     678

关键词:

 一.介绍

案例一

 测试代码:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class test 
    public static void main(String[] args) 
        Set set=new HashSet();
        set.add("blue");
        set.add("red");
        set.add("black");
        set.add("yellow");
        set.add("white");
        System.out.println("集合中的元素是:");
        //由于HashSet类没有get方法,采用迭代器
        Iterator it=set.iterator();
        //遍历迭代器并输出元素
        while(it.hasNext())
            System.out.print(it.next()+" ");
        

        System.out.println("\n当插入重复元素后集合中的元素是:");
        set.add("black");
        it=set.iterator();
        while(it.hasNext())
            System.out.print(it.next()+" ");
        

        //说明插入重复元素不会报错,但是不会被执行
    

运行结果:

案例二

测试代码:

Cat类



import java.util.Objects;

public class Cat 
    private String name;
    private int month;
    private String species;
    //构造函数
    public Cat() 
    

    public Cat(String name, int month, String species) 
        this.name = name;
        this.month = month;
        this.species = species;
    
    //get和set方法


    public String getName() 
        return name;
    

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

    public int getMonth() 
        return month;
    

    public void setMonth(int month) 
        this.month = month;
    

    public String getSpecies() 
        return species;
    

    public void setSpecies(String species) 
        this.species = species;
    

    @Override
    public String toString() 
        return "" +
                "姓名:" + name  +
                ", 年龄:" + month +
                ", 品种:" + species  +
                '';
    

    @Override
    public boolean equals(Object o) 
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cat cat = (Cat) o;
        return month == cat.month &&
                Objects.equals(name, cat.name) &&
                Objects.equals(species, cat.species);
    

    @Override
    public int hashCode() 
        return Objects.hash(name, month, species);
    

CatTest



import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CatTest 
    public static void main(String[] args) 
        Cat huahua=new Cat("花花",12,"加菲猫");
        Cat fanfan=new Cat("凡凡",6,"波斯猫");
        Set<Cat> set=new HashSet<Cat>(); //<类型>   泛型之后就不用类型转换
        set.add(huahua);
        set.add(fanfan);
        Iterator it=set.iterator();//也可Interator<Cat>
        //遍历迭代器并输出元素
        while(it.hasNext())
            //若不重在Cat类中toString()方法 输出的是地址
            System.out.println(it.next());
        

        //查找
        //通过对象查找
        it=set.iterator();
        while(it.hasNext())
            if(set.contains(huahua)) 
                System.out.println("花花找到了");
                break;
            
        
        System.out.println("***********");
        //通过姓名查找
        it=set.iterator();
        //定义一个猫的对象
        Cat c;
        boolean flag=false;
        while(it.hasNext())
            //将遍历到的集合元素强制类型转换为Cat类的对象
            c=(Cat)it.next();
            if(c.getName().equals("花花")) 
                flag=true;
                break;
            
        
        if(flag)
            System.out.println("花花找到了");
        
        else 
            System.out.println("花花没找到");
        
        System.out.println("***************");


        //删除
        Cat huahua1=new Cat("花花二代",12,"加菲猫");
        set.add(huahua1);
        //删除花花二代 此处采用增强型for循环
        for(Cat cat:set)
            if("花花二代".equals(cat.getName()))
                set.remove(cat);
                break;
            
        
       //遍历循环
        for(Cat cat:set)
            System.out.println(cat);
        
        System.out.println("***************");
        //删除所有宠物猫信息
        boolean flag1=set.removeAll(set);
        //if(flag)
        if(set.isEmpty())
            System.out.println("宠物猫信息已经全部删除");
        
        else
            System.out.println("宠物猫信息未成功删除");
    

运行结果:

 

二:注意

1.集合在查找的时候不允许删除元素,如果进行该操作if判断条件成立时,不给break,会报错。因为在进入循环的时候已经确定了集合的大小,修改之后再去按照原大小遍历肯定是不对的。

python基础之集合相关操作与函数和字典相关函数

一:集合相关操作与相关函数1.集合相关操作(交差并补 )#intersection()交集set1="one","two","three"set2="four","five","one"res=set1.intersection(set2)print(res)res=set1&set2print(res)#difference()差集set1="one","two"," 查看详情

集合框架之set学习

前言:    1、何为框架:可以理解为一个基础结构,在基础结构上进行进一步开发会变得很方便。     2、三种集合类型:集合(Set):元素无序不可重复; 列表(List):元素有序可重复; 映... 查看详情

java基础知识回顾之四-----集合listmap和set

...集合介绍我们在进行Java程序开发的时候,除了最常用的基础数据类型和String对象外,也经常会用到集合相关类。集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用... 查看详情

java集合之hashset哈希set基础

hashSet实现set接口、serializable、cloneable接口。不允许有重复值,但可以null,不保证与插入顺序一致。HashSet迭代的时间与HashSet实例的大小(元素的数量)和底层HashSet实例(桶的数量)的“容量”的和成比例。因此,若迭代性能很... 查看详情

stl之set集合容器应用基础

  set集合容器使用一种称为红黑树(Red-BlackTree)的平衡二叉检索树的数据结构,来组织泛化的元素数据。每一个节点包括一个取值红色或黑色的颜色域。以利于进行树的平衡处理。作为节点键值的元素的插入,必须确保每一... 查看详情

java基础知识(java集合框架之list与set)

  List和Set概述数组必须存放同一种元素。StringBuffer必须转换成字符串才能使用,如果想拿出单独的一个元素几乎不可能。数据有很多使用对象存,对象有很多,使用集合存。集合容器因为内部的数据结构不同有多种具体... 查看详情

python基础复习之集合

#set是什么?用来干什么?#python中,用set来表示一个无序不重复元素的序列。set的只要作用就是用来给数据去重。##可以使用大括号或者set()函数创建集合,但是注意如果创建一个空集合必须用set()而不是,因为... 查看详情

java基础之集合体系结构(collectionlistarraylistlinkedlistvector)

  Java基础之集合体系结构详细笔记(Collection、List、ArrayList、LinkedList、Vector)  集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就是对数据结构的封装  数组与集合的比较  数组:长度固定,可以存... 查看详情

javase学习总结(十三)set集合hashset集合linkedhashset集合treeset集合比较器的使用利用set集合实现去重(代码片段)

JavaSE学习总结(十三)Set集合/HashSet集合/LinkedHashSet集合/TreeSet集合/比较器的使用/利用Set集合实现去重一、Set集合Set集合是Collection集合的一个子接口,实际上Set就是Collection,只是行为略有不同:Set集合不保存... 查看详情

javase基础---集合(代码片段)

 测试 importjava.util.ArrayList;publicclassArrayListDemopublicstaticvoidmain(String[]args)ArrayList<String>array=newArrayList<String>();//或者ArrayList<String>array=newArrayList& 查看详情

javase集合基础总览

Java集合Java集合,也称之为容器。基本上你写所有的Java程序,都必须要用到一个包。该API基本都位于java.util工具类包中,是JavaSE中的重中之重。简单可以总结为“1136”,分别是一个图,一个类,三个知识点,六个接口。下面逐... 查看详情

javase知识-15(colletion集合)

目录对象数组的概述和使用集合的由来及集合继承体系图Collection集合的基本功能测试集合的遍历之集合转数组遍历Collection集合的带All功能测试集合的遍历之迭代器遍历List集合的特有功能概述和测试List集合存储学生对象并遍历... 查看详情

阿花宝宝java基础笔记之集合框架

基本接口:Collection 接口:List 实现类:ArrayListLinkedList 接口:Set(唯一,无序) 实现类:HashSet(哈希)TreeSetMap接口:Map 实现类:HashMap---------------------------------------------------------------------- 查看详情

java基础知识之什么是集合框架(代码片段)

Java基础知识之什么是集合框架,前面的文章,我们已经学习了Java的一些基础知识,比如泛型、注解等等内容,接着本博客继续学习Java中一个很常见的内容,集合。1、什么是Java中的集合框架?JavaCollections框架由接口和类组成,... 查看详情

java基础之容器集合(collection和map)(代码片段)

目录前言一.Collection集合      1.1List集合1.1.1ArrayList集合1.1.2LinkedList集合1.2Set集合1.2.1HashSet集合HashSet集合保证元素唯一性源码分析:1.2.2TreeSet集合比较器排序Comparator的使用: 二.Map集合 2.1Map集合的概述与特点2.2Map集合的获... 查看详情

19701android零基础入门03java常用工具类04java集合03set集合01set概述

19701Android零基础入门03Java常用工具类04Java集合03Set集合01Set概述本文知识点:Set概述说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了... 查看详情

基础数据类型之集合和深浅copy,还有一些数据类型补充

                      集合集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:  去重... 查看详情

javase基础之linkedlist的底层简单实现

这里贴上LinkedList底层的简单实现 packagecom.yck.mylinkedlist;publicclassNode{privateNodeprevious;//上一结点privateObjectobject;//本结点所存储的东西privateNodenext;//下一个结点publicNode(){}publicNode(Nodeprevious,Objectobjec 查看详情