总结篇---Set集合篇

    科技2025-01-15  8

    前言

    依旧是不断补充的过程

    set类和map集合非常相似,这一点可以记住,可以举一反三的想map所具有的的·实现类,set集合有存在 像: HashMap-------------------HashSet TreeMap------------------TreeSet LinkedHashMap --------LinkedHashSet

    实现类

    set的特点是:无序且不能重复 它主要有三个实现类:

    实现类是否有序线程特点HashSet无序不安全按照哈希算法来存取集合中的对象,存取速度比较快LinkedHashSet有序不安全保证插入有序TreeSet有序不安全CopyOnWriteArraySet-----安全

    HashSet

    对于HashSet来说,他是基于HashMap实现的,他的底层实际上就是通过调用HashMap它重点需要注意 hashCode()和equals() 方法

    HashSet如何实现不重复?

    他是实现不重复的原理:主要在于hashCode()和equals()Hash进行对比的原理就是通过上述两个方法,如果对比之后的结果为true就不添加所以在使用hashset的时候需要注意重写上述两个方法

    TreeSet

    特点:有序与TreeMap一样,它实现的原理也是通过红黑树实现 (注:红黑数想要了解比较复杂,可以作为一个单独的篇幅了)TreeSet是自然排序,那么肯定有其排序规则可以通过Comparator方法设置其规则

    以下简单例子: 输出结果: 【A、C、D】 【D、A、C】

    一个是通过tree本身的排序规则实现一个是通过自己设置的(插入时)排序规则来实现的 @Test void another(){ TreeSet<String> treeSet = new TreeSet(); treeSet.add("D"); treeSet.add("A"); treeSet.add("C"); System.out.println(treeSet); Comparator<String> comparator = new Comparator<String>() { @Override public int compare(String o1, String o2) { return 1; } }; TreeSet<String> treeSet2 = new TreeSet(comparator); treeSet2.add("D"); treeSet2.add("A"); treeSet2.add("C"); System.out.println(treeSet2); }

    linkedHashSet

    LinkedHashSet 他所调用的增删改查都是继承至HashSet,但是他是通过LinkedHashMap来存储元素,所以它和LinkedHashSet一样都是有序的,IQ原理都是一样的,通过双向链表来实现插入有序LinkedHashSet是不支持按访问顺序对元素排序的,只能按插入顺序排序

    小结

    看到array,就要想到角标(下标)看到link,就要想到first,last看到hash,就要想到hashCode,equals.看到tree,就要想到两个接口。Comparable,Comparator
    Processed: 0.013, SQL: 8