java 集合 Set

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



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值