廖雪峰Java5集合-4Set-1使用Set

集合

Set用于存储不重复的元素集合:

  • boolean add(E e)
  • boolean remove(Object o)
  • boolean contains(Object o)
  • int size()
public class Main {
    public static void main(String[] args) throws IOException {
        Set<String> aset = new HashSet<>();
        System.out.println("1"+aset.add("tom"));
        System.out.println("2"+aset.add("tom"));//重复添加失败,set不能存储重复元素
        System.out.println("3"+aset.add("jerry"));

        System.out.println("集合长度"+aset.size());

        System.out.println("4"+aset.remove("jerry"));
        System.out.println("5"+aset.remove("kitty"));
        System.out.println("6"+aset.contains("tom"));
        System.out.println("7"+aset.contains("jerry"));
    }
}

1418970-20190317175156703-126061968.png

Set不保证有序:

  • HashSet是无序的
  • Tree Set是有序的
  • 实现了SortedSet接口的是有序Set
public class Main {
    public static void main(String[] args) throws IOException {
        //HashSet不能保证有序
        Set<String> aset = new HashSet<>();
        aset.add("apple");
        aset.add("pear");
        aset.add("orange");
        for(Object o:aset){
            System.out.println(o.toString());
        }
    }
}

1418970-20190317175559977-1047414910.png

public class Main {
    public static void main(String[] args) throws IOException {
        Set<String> aset = new TreeSet<>();
        //TreeSet按元素顺序排序
        aset.add("apple");
        aset.add("pear");
        aset.add("orange");
        for(Object o:aset){
            System.out.println(o.toString());
        }
    }
}

1418970-20190317180625125-734125222.png
TreeSet可以自定义排序算法

示例:利用set去除List中的重复元素

public class Main {
    public static void main(String[] args) throws IOException {
        List<String> list1 = Arrays.asList("pear","apple","banana","orange","apple","banana");
        System.out.println(removeDuplicate(list1));
    }
    static List<String> removeDuplicate(List<String> list){
        Set<String> set = new HashSet<>(list);
        return new ArrayList<>(set);
    }
}

1418970-20190317181706645-1333057998.png
替换为TreeSet,对元素进行排序

public class Main {
    public static void main(String[] args) throws IOException {
        List<String> list1 = Arrays.asList("pear","apple","banana","orange","apple","banana");
        System.out.println(removeDuplicate(list1));
    }
    static List<String> removeDuplicate(List<String> list){
        Set<String> set = new TreeSet<>(list);
        return new ArrayList<>(set);
    }
}

1418970-20190317181848835-1844101243.png
自定义排序算法

public class Main {
    public static void main(String[] args) throws IOException {
        List<String> list1 = Arrays.asList("pear","apple","banana","orange","apple","banana");
        System.out.println(removeDuplicate(list1));
    }
    static List<String> removeDuplicate(List<String> list){
        Set<String> set = new TreeSet<>(new Comparator<String>() {
            自定义排序算法
            @Override
            public int compare(String o1, String o2) {
                //反序
                return -o1.compareTo(o2);
            }
        });
        set.addAll(list);
        return new ArrayList<>(set);
    }
}

1418970-20190317183058424-952903741.png

总结

  • Set用于存储不重复的元素集合
  • 放入Set的元素与作为Map的Key要求相同:正确实现equals()和hashCode()
  • 利用Set可以去除重复元素
  • 遍历SortedSet按照元素的排序顺序遍历,也可以自定义排序算法

转载于:https://www.cnblogs.com/csj2018/p/10548183.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值