Jul*_*lio 5 java integer loops arraylist
我的问题如下.我有一个整数的arraylist.arraylist包含5个int,例如[5,5,3,3,9]或者[2,2,2,2,7].许多arraylists有重复的值,我不确定如何计算每个值存在多少.
问题是如何在arraylist中找到重复值并计算有多少特定副本.在第一个例子[5,5,3,3,9]中有2个5和2个.[2,2,2,2,7]的第二个例子只有4 2.我希望找到的结果信息是,是否有任何重复信息,其中有多少个以及重复了哪个特定的整数.
我不太确定如何在java中这样做.
任何帮助将非常感激.谢谢.
对我来说,最直接的答案就是使用这种Collections.frequency方法.有点像这样:
// Example ArrayList with Integer values
ArrayList<Integer> intList = new ArrayList<Integer>();
intList.add(2);
intList.add(2);
intList.add(2);
intList.add(2);
intList.add(7);
Set<Integer> noDupes = new HashSet<Integer>();
noDupes.addAll(intList); // Remove duplicates
for (Integer i : noDupes) {
int occurrences = Collections.frequency(intList, i);
System.out.println(i + " occurs " + occurrences + " times.");
}
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以Integer使用其出现次数映射每个:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer i : noDupes) {
map.put(i, Collections.frequency(intList, i));
}
Run Code Online (Sandbox Code Playgroud)
脑海中浮现出两种算法.
对它进行排序(Collections.sort).然后迭代通过轻松找到欺骗.
通过保持计数Map<Integer,Integer>(或Map<Integer,AtomicInteger>可变计数)来迭代.这样有点难看.
无论哪种方式,编码它应该是一个有益的练习.我建议做两件事,并进行比较.
| 归档时间: |
|
| 查看次数: |
3797 次 |
| 最近记录: |