zoukankan      html  css  js  c++  java
  • Set集合的

    Set集合

    Hashset

    set集合值特点,它是不可重复的且无序的。但是这个排序是相对而言,它也有个自然排序,按照字母A-Z排序

     1 Set<String> s=new HashSet<>();
     2 //    s.add("a");
     3 //    s.add("b");
     4 //    s.add("c");
     5 //    s.add("d");
     6 //    s.add("a");
     7 //    System.out.println(s.size());
     8 //    
     9 //     Iterator<String> it=s.iterator();
    10 //     while(it.hasNext()) {
    11 //         System.out.println(it.next());
    12 //     }
    13 //    System.out.println("---------------------");
    14 //    for(String so:s) {
    15 //        System.out.println(so);

    Set集合的值(对象)

    如果set集合放入的是对象,那么它是相对可以出现重复值的。当然只是我们看到的那样,其实这些值都有地址上的本质区别;

    但是我们可以重写equals的方法来实现比较的是我们想比较的东西,而不是地址

     1 @Override
     2     public boolean equals(Object obj) {
     3         boolean flag=false;
     4        //判断当前对象的类型(所属自定义类的名称)
     5       if(obj instanceof Person) {
     6           Person p=(Person)obj;
     7           if(this.sid==p.sid) {
     8               if(this.sage==p.sage) {
     9                   if(this.sname.equals(p.sname)) {
    10                       flag=true;
    11           }
    12           }
    13           }
    14       }

    接下来进行比较:

     1 Set<Person> s=new HashSet<>(); 2 System.out.println(new Person(1, "Is", 18).equals(new Person(1, "zs", 18))); 

    这就会进行值的比较,返回的值是false;

    当我们用foreach进行循环遍历输出的时候,输出这个对象的话(在没有重写同String的情况下)它输出的是一窜字符,当我们重写toString后它默认的值就是对象的值

  • 相关阅读:
    如何卸载VS 2017之前版本比如VS 2013、VS2015、 VS vNext?
    在SQL Server中如何进行UPDATE TOP .....ORDER BY?
    EntityFramework 6.x和EntityFramework Core插入数据探讨
    2017-2018:时间戳
    http协议进阶(六)代理
    认清性能问题
    <转>安全测试思维导图
    RESTful API浅谈
    http协议进阶(五)连接管理
    聊聊软件测试的职业规划
  • 原文地址:https://www.cnblogs.com/hyfl/p/10904302.html
Copyright © 2011-2022 走看看