![](/img/trans.png)
[英]What's a good way to store an array of integers (java) to MySQL database
[英]Good way to store unique integers
我的问题是:确定一个数字是否包含在Collection
以确定是否将其添加到集合并保持唯一性的快速方法是什么。 如果我能帮助它,我宁愿不遍历列表。
我有一个名为numberList
的List<Integer>
。 我希望它存储唯一的整数,并且永远不允许添加重复项。 我想做这样的事情:
private void add(int number) {
if (!numberList.contains(number)) {
numberList.add(number);
}
}
但显然这不会起作用,因为numberList
包含一个Integer
对象列表,所以无论数字如何都是唯一的对象。
谢谢!
一种是将整数存储在Set<Integer>
例如HashSet<Integer>
。 集不允许重复。
编辑
此外,Collection的contains(...)
方法使用对象的equals(...)方法来查看它是否由集合保存,因此如果您需要使用List,上面的方法也可以防止重复作为你的收藏。 自己测试一下,你会发现它就是这样。
例如:
List<Integer> numberList = new ArrayList<Integer>();
int[] myInts = {1, 1, 2, 3, 3, 3, 3, 4};
for (int i : myInts) {
if (!numberList.contains(i)) {
numberList.add(i);
}
}
System.out.println(numberList);
将返回: [1, 2, 3, 4]
此外,HashSets的一个可能问题是它们没有被排序,因此如果排序很重要,您将需要查看使用其他各种有序集合。
最紧凑的形式不是BitSet
吗? 它在存储方面是有效的,因为它将无限扩展。 它也不会不必要地使用存储。
您是在多线程环境中工作吗? 如果是这样,还有其他结构可能更好/更有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.