Set集合里面的多个对象没有明显顺序。Set不允许有重复元素。
当试图把两个相同的对象()加入一个Set中时,对象会调用equals方法比较两个对象元素是否相同,相同则不会加入。
下面是几种遍历方法,以及set中调用实例
//Java中Set集合是一个不包含重复元素的Collection
//也就是,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class SetTest2 {
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
System.out.println("set="+set);
boolean flag=set.add("e");//不能放入重复数据
System.out.println("\"e\"能放入set集合中?:"+flag);
//迭代遍历:while循环实现
//获取Set集合的迭代器
System.out.println("while循环迭代遍历---------------------");
System.out.print("set={");
Iterator<String> iterator=set.iterator();
while(iterator.hasNext())
{
//取出集合元素
String next=iterator.next();
System.out.print(next+" ");
}System.out.print("}\n");
System.out.println("for循环迭代遍历---------------------");
//迭代遍历: for循环实现,跟while循环差不多
System.out.print("set={");
for(Iterator<String> it=set.iterator();it.hasNext();)
{
String next=it.next();
System.out.print(next+" ");
}System.out.print("}\n");
System.out.println("foreach遍历---------------------");
//foreach遍历
System.out.print("set={");
for(String value : set){
System.out.print(value+" ");
}System.out.print("}\n");
//其他功能小测
//查询元素
System.out.println(set.contains("a"));//true
Set<String> set2 = new HashSet<String>();
set2.add("f");
set2.add("g");
//求并集:
System.out.println("set="+set);
set.addAll(set2);
System.out.println("set2="+set2);
System.out.println("set="+set);
//判断连个集合是否相等:1,元素个相同,2,值相同
/*比较指定对象与此 set 的相等性。
* 如果指定的对象也是一个 set,两个 set 的大小相同,
* 并且指定 set 的所有成员都包含在此 set 中
* (或者,此 set 的所有成员都包含在指定的 set 中也一样),
* 则返回 true。此定义确保了 equals 方法可在不同的 set 接口实现间正常工作。
*/
Set<String> set3 = new HashSet<String>();
set3.addAll(set2);
System.out.println(set3.equals(set2));//true
set3.add("1");
System.out.println(set3.equals(set2));//false
//置空
set3.clear();
//判空
System.out.println(set3.isEmpty());//true
set3.addAll(set2);
//移除某个元素
System.out.println("set3="+set3);//set3=[f, g]
System.out.println(set3.remove("f"));//true
System.out.println(set3.remove(2));//flase
System.out.println("set3="+set3);//set3=[g]
set3.add("new");
//全部移除set2中的元素
System.out.println("set3="+set3);//set3=[new, g]
set3.removeAll(set2);
System.out.println("set3="+set3);//set3=[new]
set3.addAll(set2);
System.out.println("set3="+set3);//set3=[new, f, g]
//set3中值保留set2中的元素
set3.retainAll(set2);
System.out.println("set3="+set3);//set3=[f, g]
//返回数组:Object类型数组
Object[] objects=set3.toArray();
System.out.print("objects={");
for (Object object : objects) {
System.out.print(object+" ");
}System.out.print("}\n");
//返回指定类型数组
String[] strings=set3.toArray(new String[0]);
System.out.print("strings={");
for (String string : strings) {
System.out.print(string+" ");
}System.out.print("}\n");
//返回容量:
System.out.println("set3中元素的个数为"+set3.size());//2
}
}
结果:
set=[a, b, c, d, e]
"e"能放入set集合中?:false
while循环迭代遍历---------------------
set={a b c d e }
for循环迭代遍历---------------------
set={a b c d e }
foreach遍历---------------------
set={a b c d e }
true
set=[a, b, c, d, e]
set2=[f, g]
set=[a, b, c, d, e, f, g]
true
false
true
set3=[f, g]
true
false
set3=[g]
set3=[new, g]
set3=[new]
set3=[new, f, g]
set3=[f, g]
objects={f g }
strings={f g }
set3中元素的个数为2