欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Set结构的使用与实现

程序员文章站 2022-04-15 14:37:30
...

Set

  1. Set是继承自Collection的一个接口类;
  2. Set中只存储了key,并且要求key一定要唯一;
  3. Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的;
  4. 因为Set里面的key是不能够重复的,所以Set最大的功能就是对集合中的元素进行去重;
  5. 实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在HashSet的基础上维护了一个双向链表,用这个链表来记录元素的插入次序;
  6. Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入;
  7. Set中插入的key不能为null;
  8. Set的常用方法:
    Set结构的使用与实现
  9. TreeSet和HashSet的区别:
    Set结构的使用与实现
  10. TreeSet的作用:去重+排序 ;HashSet的作用:去重;
  11. TreeSet和HashSet的代码实现:TreeSet和HashSet的遍历需要使用Iterator迭代器实现
    public static void testTreeSet(){
        Set<String> s = new TreeSet<>();
        System.out.println(s.add("orange"));
        System.out.println(s.add("peach"));
        System.out.println(s.add("apple"));
        System.out.println(s.size());
        System.out.println(s);

        System.out.println(s.add("apple"));
        System.out.println(s);

        if(s.contains("watermelon")){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }

        //遍历
        Iterator<String> it = s.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println(s.remove("watermelon"));
        System.out.println(s.remove("apple"));
        s.clear();
    }
    public static void testHashSet(){
        Set<String> s = new HashSet<>();
        System.out.println(s.add("orange"));
        System.out.println(s.add("peach"));
        System.out.println(s.add("apple"));
        System.out.println(s.size());
        System.out.println(s);

        System.out.println(s.add("apple"));
        System.out.println(s);

        if(s.contains("watermelon")){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }

        //遍历
        Iterator<String> it = s.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println(s.remove("watermelon"));
        System.out.println(s.remove("apple"));
        s.clear();
    }

执行结果:


/*TreeSet*/
true
true
true
3
[apple, orange, peach]
false
[apple, orange, peach]
No
apple
orange
peach
false
true
true
true
true

/*HashSet*/
3
[orange, apple, peach]
false
[orange, apple, peach]
No
orange
apple
peach
false
true

相关标签: Set