zoukankan      html  css  js  c++  java
  • java之hashSet

     1 import java.util.HashSet;
     2 import java.util.Set;
     3 
     4 
     5 public class demo {
     6     public static void main(String[] args) {
     7         Set<Test> set = new HashSet<Test>();
     8         Test test = new Test();
     9 
    10         test.setStr("123");
    11         set.add(test);
    12         System.out.println(set);
    13 
    14         test.setStr("456");
    15         set.add(test);
    16         System.out.println(set);
    17 
    18         test.setStr("789");
    19         set.add(test);
    20         System.out.println(set);
    21     }
    22 }
    23 class Test{
    24     String str;
    25 
    26     public void setStr(String str) {
    27         this.str = str;
    28     }
    29 
    30     @Override
    31     public String toString() {
    32         return str;
    33     }
    34 
    35     @Override
    36     public int hashCode() {
    37         return str.hashCode();
    38     }
    39 
    40 }

    这段代码将会输出

    [123]
    [456, 456]
    [789, 789, 789]

    所以java的集合加入的是引用,大概是为了节约时间吧

    如果要插入对象,就应该不断创建对象的引用

     1 import java.util.HashSet;
     2 import java.util.Set;
     3 
     4 
     5 public class demo {
     6     public static void main(String[] args) {
     7         Set<Test> set = new HashSet<Test>();
     8         Test test = new Test();
     9 
    10         test.setStr("123");
    11         set.add(test);
    12         System.out.println(set);
    13 
    14         test = new Test();
    15         test.setStr("456");
    16         set.add(test);
    17         System.out.println(set);
    18 
    19         test = new Test();
    20         test.setStr("789");
    21         set.add(test);
    22         System.out.println(set);
    23     }
    24 }
    25 class Test{
    26     String str;
    27 
    28     public void setStr(String str) {
    29         this.str = str;
    30     }
    31 
    32     @Override
    33     public String toString() {
    34         return str;
    35     }
    36 
    37     @Override
    38     public int hashCode() {
    39         return str.hashCode();
    40     }
    41 
    42 }

    [123]
    [123, 456]
    [123, 456, 789]

  • 相关阅读:
    python中将汉字转换成拼音
    关于拉格朗日和内维尔插值算法的python实现
    hdoj1874 (优先队列+Dijkstra)
    hdoj1325 Is It A Tree?
    poj2299 二分思想
    nyoj89 汉诺塔(二)
    nyoj914Yougth的最大化(二分搜索 + 贪心)
    nyoj832 合并游戏(状态压缩DP)
    zoj2432 hdoj1423 最长公共上升子序列(LCIS)
    poj1308 Is It A Tree?(并查集)详解
  • 原文地址:https://www.cnblogs.com/liu-zh/p/4442285.html
Copyright © 2011-2022 走看看