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的主要内容,如果未能解决你的问题,请参考以下文章