【发布时间】:2012-08-14 18:17:29
【问题描述】:
基本上,我的伙伴一直在说,我可以通过使用不同的方式检查 int 数组是否包含 int 来缩短我的代码,尽管他不会告诉我它是什么:P。
当前:
public boolean contains(final int[] array, final int key) {
for (final int i : array) {
if (i == key) {
return true;
}
}
return false;
}
也试过这个,尽管由于某种原因它总是返回 false。
public boolean contains(final int[] array, final int key) {
return Arrays.asList(array).contains(key);
}
谁能帮帮我?
谢谢。
【问题讨论】:
-
您的 Arrays.asList(...) 调用需要一个可变参数,也就是说,它会将您可能传入的任意数量的参数包装在一个列表中。在您的情况下,您将获得一个包含单个元素的数组列表,而该列表显然不包含 int。
-
你的评论现在意味着什么?
-
检查
Hashset基于重审机制的答案。这是最快的方式。 -
我认为缩短原始代码没有任何意义,因为您的参数是一个原始数组,而且您的代码非常清晰和直截了当。
ArrayList实现也是如此。 -
我不会让你的代码更短。 (1) arraylist 做同样的事情。 (2) - 更重要的是使用 Arrays.asList 的缩短代码创建了新对象,这可能是一些性能关键代码中的问题。第一个代码 sn -p 是你能做的最好的事情。