JavaSE基础---集合之Set

Posted 猪八戒1.0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE基础---集合之Set相关的知识,希望对你有一定的参考价值。

 一.介绍

案例一

 测试代码:

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,会报错。因为在进入循环的时候已经确定了集合的大小,修改之后再去按照原大小遍历肯定是不对的。

以上是关于JavaSE基础---集合之Set的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE基础八----<集合>Set接口及其实现类,Set接口的迭代方式

JavaSE基础--Java基础语法

JavaSE高级之集合类

JavaSE集合之List

JavaSE复习基础巩固

Python基础数据类型之set集合