【发布时间】:2014-05-11 17:29:19
【问题描述】:
HashSet<Integer> set = new HashSet<Integer>();
set.add(1);
我怎样才能把1 拿出来?我可以通过for(integer i : set) 做到这一点。您有其他解决问题的想法吗?
我指定的问题是“给定一个整数数组,每个元素出现两次,除了一个。找到那个唯一的。” 如果集合不包含它,我想将元素添加到集合中,并在循环期间删除存在的元素。最后剩下的元素是答案。不知道怎么退货。
public static int singleNumber(int[] A) {
HashSet<Integer> set = new HashSet<Integer>();
for (int a : A) {
if (!set.contains(a)) {
set.add(a);
} else {
set.remove(a);
}
}
/**
* for(Integer i : set) { return i; }
*return A[0];//need one useless return
/**
* while(set.iterator().hasNext()) { return set.iterator().next(); }
* return A[0];//need one useless return
*/
return set.toArray(new Integer[1])[0];
}
【问题讨论】:
-
这是唯一的方法。
Set不提供任何数据检索方法。 -
知道你想要这个做什么可能会很有趣。您的用例...
-
“拿出来”是什么意思。是检索还是删除?
-
@AlexandreSantos OP 可以通过
for(integer i : set)完成,这意味着 OP 对数据检索而不是数据删除感兴趣。 -
@Luiggi,你确定吗?
keySet方法呢。