【问题标题】:how do i compare element of hashset?我如何比较哈希集的元素?
【发布时间】:2017-02-13 12:03:10
【问题描述】:
HashSet<String> noDuplicate = new HashSet<String>();
for(int i=0;i<strings.length;i++)
{
     for(int a=0;a<strings2.length;a++)
     {
         if(noDuplicate.get(i).equals(strings2[a]))
             //blahblah code here
     }
}

但是 get 不起作用,我不确定如何使用迭代器,如果这是用于遍历哈希集元素的方法。我想做类似的事情:

for(int i=0;i<strings.length;i++)
{
     for(int a=0;a<strings2.length;a=a+2)
     {
         if(node_marked_array.get(i).equals(strings2[a]))
             //blahblah code here
     }
}

但我被告知要使用哈希集,因为值重复。

【问题讨论】:

  • 我已经在你的另一个问题中给了你这个代码:stackoverflow.com/questions/13710668/…
  • 你到底想做什么?你想检查一些Set 是否包含来自strings 数组的值吗?还是什么?
  • 是的,这就是我想要做的
  • 我的回答适用吗?如果没有,请评论我进行调整。我刚刚复制了您的代码并为Set 使用了正确的方法。
  • 我不知道你想做什么。一切为了什么?

标签: java


【解决方案1】:

改用HashSet#contains:

HashSet<String> noDuplicate = new HashSet<String>();
for(int i=0;i<strings.length;i++){
    for(int a=0;a<strings2.length;a++){
         if(noDuplicate.contains(strings2[a]))
         //blahblah code here
    }
}

【讨论】:

    【解决方案2】:

    Sets 根据定义没有顺序,因此不能像数组或通过get 方法的列表那样被索引。但是,您仍然可以使用for-each 循环(或使用iterator() 方法返回的迭代器)遍历Set 的元素。

    例如,如果我有一个名为set 的Set,其中包含字符串"a"、"b" 和"c":

    for (String s : set) {
        System.out.println(s);
    }
    
    一个 b C

    【讨论】:

    • 没有订单与没有get() 方法无关。反例请参见HashMap。
    • @EJP 我已经澄清了答案。
    【解决方案3】:

    我想这会有所帮助

        Iterator iter=hm.keySet().iterator();
               while(iter.hasNext()){ 
                  String key = (String)iter.next();
                 if(key.equals(str)){
                      val1 = (String)hm.get(key);
                   }
               }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多