【问题标题】:why i am getting duplicates in my list after using containsKey method为什么在使用 containsKey 方法后我的列表中出现重复项
【发布时间】:2020-12-31 05:44:17
【问题描述】:

我正在使用 hashmap 来验证地图中是否存在密钥并将密钥添加到列表中我正在使用 containsKey 来防止重复,但它会将重复添加到我的列表中

 private static  void makeList(int n,ArrayList<Integer> minimum ,HashMap<Integer,Integer> ugly) {
        for(int i=1; minimum.size() < n; ++i) {
           
            if(!ugly.containsKey(2*i)); {
            minimum.add(2*i);
            ugly.put(2*i,2*i );
            }
            int m3=3*i; 
            if(!ugly.containsKey(3*i)){
            minimum.add(3*i);
             ugly.put(3*i,3*i);   
            }
            int m5=5*i;
            if(!ugly.containsKey(m5)){
           minimum.add(m5);
           ugly.put(m5,m5);
            }
            
            
        }
            
    } 

【问题讨论】:

    标签: java list dictionary arraylist hashmap


    【解决方案1】:

    我看到你在if() 条件之后给了分号;

    删除它并尝试

     private static  void makeList(int n,ArrayList<Integer> minimum ,HashMap<Integer,Integer> ugly) {
            for(int i=1; minimum.size() < n; ++i) {
               
                if(!ugly.containsKey(2*i)) { //<-edited part, removed semicolon
                minimum.add(2*i);
                ugly.put(2*i,2*i );
                }
                int m3=3*i; 
                if(!ugly.containsKey(3*i)){
                minimum.add(3*i);
                 ugly.put(3*i,3*i);   
                }
                int m5=5*i;
                if(!ugly.containsKey(m5)){
               minimum.add(m5);
               ugly.put(m5,m5);
                }
                
                
            }
                
    

    【讨论】:

      【解决方案2】:

      简单明了的代码。

      private static  void makeList(int n, List<Integer> minimum, Map<Integer,Integer> ugly) {
          for (int i = 1; minimum.size() < n; i++)
              for (int j : Arrays.asList(2, 3, 5))
                  if(ugly.put(i * j, i * j) == null)
                      minimum.add(i * j);
      }
      

      P.S.为什么不使用Set&lt;Integer&gt; 而不是Map&lt;Integer, Integer&gt;key == value

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-08
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多