笨鸟先飞——Java基础Set集合学习

package study;

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

/**
 * Created by dell on 2017/1/23.
 */
public class Set {
    public static void main(String[] args){
        method_add();
        method_addAll();
    }
    public static void method_add(){
        java.util.Set<String> set = new HashSet<String>();
        set.add("1");
        set.add("2");
        set.add("3");
        set.add("3");
        set.add("你好");
        set.add(null);
        System.out.println("添加重复数据和NULL值之后的set"+set);//打印结果:[null, 3, 2, 1, 你好]        /**
         * 从打印结果来看,HashSet 是无序的,不重复的,允许存null
         */
    }

    public static void method_addAll(){
        Boolean a = false;

        java.util.Set<String> set1 = new HashSet<String>();
        set1.add("1");
        set1.add("2");

        java.util.Set<String > set2 = new HashSet<String>();
        set2.add("3");
        set2.add("4");

        set1.addAll(set2);
        System.out.println("添加集合【set2】之后的set1"+set1);//打印结果:[3, 2, 1, 4]         /**
         * 从打印结果再一次证明HashSet的无序性,且addAll方法可以添加集合。addAllargumentCollection<? extends String> c
         */

        set1.remove("4");
        System.out.println("删除【4】之后的结果"+set1);//打印结果:[3, 2, 1]
        set1.removeAll(set2);
        System.out.println("删除【set2】之后的结果"+set1);//打印结果:[2, 1]
        /**
         *HashSet调用删除remove方法,是直接拿掉删除的值,顺序不变。
         */

        /**
         * 判断是否包含此值
         */
        if (set1.contains("3")){
            a = true;
            System.out.println("调用包含方法【contains】是否包含元素3----"+a);
        }else {
            System.out.println("调用包含方法【contains】是否包含元素3----"+a);
        }

        /**
         * 判断是否包含此集合
         */
        System.out.println("集合【set1】的元素为"+set1);
        System.out.println("集合【set2】的元素为"+set2);
        if (!set1.containsAll(set2)){
            System.out.println("集合【set1】不包含集合【set2");
        }else {
            System.out.println("集合【set1】包含集合【set2");
        }

        for (String s : set1){
            System.out.println("for循环遍历set1----"+s);
        }

        Iterator<String> ite = set1.iterator();
        while (ite.hasNext()){
            System.out.println("Iterator循环遍历元素的哈希码===="+ite.next().hashCode());
        }

        System.out.println("set1的元素个数---"+set1.size());

        boolean c = set1.retainAll(set2);
        System.out.println(c);
        System.out.println(set1);
        /**
         * 之前没有用过这个方法,今天试了下,发现是剔除set1中不set2没有的值。
         * 1.如果set1.equal(set2),则返回false,说明set1调用retainAll()方法并未更改。
         * 2.如果set1集合中的元素和set2中的不同,则返回true,说明set1调用retainAll()方法更改了。
         * 所以依我个人的理解retainAll()方法是保留调用左右的交集元素
         */
        System.out.println("转换成数组集合==="+set2.toArray());
        String[] strArr = set2.toArray(new String[set2.size()]);
        System.out.println("转化成数组的长度===="+strArr.length);
           for(String tempStr : strArr) {
               System.out.println("转换成数组集合元素====="+tempStr);
           }
        }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值