A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

  • Set和Collection相比并没有提供更多处理数据的方法,Set中的对象是无序的,可以说Set就是Collection
  • 需要指出的是Set中不允许有相同的元素(说明:Set中不是 == 来判断两个元素是否相等的(以前的博文有说明过 == 是比较物理地址的),Set是通过equals()方法和hashCode()来判断的,即equals()返回true,同时hashCode()返回值相同时将两个对象判定为同一个对象)
  • HashSet是Set类的主要实现类,以下代码说明了Set如何判定两个对象是否相同


    • //当向HashSet中存入A,B对象时,只有这连个对象的equals返回为true



    • // 和hashCode一样的时候,HashCode才会把它们当成一个对象











    • package Set;











    • import java.util.HashSet;







    • class A{



    •     public boolean equals(Object obj){



    •         return true;



    •     }



    • }











    • class B{



    •     public int hashCode(){



    •         return 2;



    •     }



    • }







    • class C{







    •     public int hashCode(){



    •         return 3;



    •     }







    •     public boolean equals(Object obj){



    •         return true;



    •     }







    • }







    • public class HashSetTest {







    •     public static void main(String args[]){







    •         HashSet books = new HashSet();







    •         books.add(new A());



    •         books.add(new A());







    •         books.add(new B());



    •         books.add(new B());







    •         books.add(new C());



    •         books.add(new C());







    •         System.out.println(books);







    •      }







    • }



    • //输出结果为



    • //        [Set.B@2, Set.B@2, Set.C@3, Set.A@13b6d03, Set.A@f5f2bb7]



  • 最后介绍一下LinkedHashSet类,LinkedHashSet类就是使用链表来维护集合元素的顺序~~也没啥好特殊的

  • 一下为代码实例



    • //LinkedHashSet就是普通的hashset加上链式结构存储







    • package Set;







    • import java.util.LinkedHashSet;







    • public class LinkedHashSetTest {



    •     public static void main(String args[]){



    •         LinkedHashSet books = new LinkedHashSet();



    •         books.add("java1");



    •         books.add("java2");



    •         System.out.println(books);



    • //      输出 [java1, java2]



    •         books.remove("java1");



    •         books.add("java1");



    •         System.out.println(books);



    • //      输出 [java2, java1]



    •     }



    • }





2 个回复

倒序浏览
奈斯,棒棒哒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马