ArrayList与TreeList集合统计随机数出现次数,arraylisttreelist
ArrayList与TreeList集合统计随机数出现次数,arraylisttreelist
首先定义一个类CountNumber,声明两个成员变量用来存放随机数和次数
private int number;
private int count;
然后定义一个ArrayList集合加入泛型,使用Math.random将随机数保存到CountNumber类中,再把类添加到集合中
接着使用两个for循环将类中重复出现的随机数项从集合中删除,同时把控制次数的count++,记得删除集合后要把索引自减,即j--。
for(int i = 0; i < list.size() - 1; i++) {
for(int j = i + 1; j < list.size(); j++) {
if(list.get(i).getNumber() == list.get(j).getNumber()) {
int count = list.get(i).getCount();
count++;
list.get(i).setCount(count);
list.remove(j);
j--;
}
}
}
再使用选择排序,将集合中按随机数出现次数降序排序
for(int i = 0; i < list.size() - 1; i++) {
for(int j = i + 1; j < list.size(); j++) {
if(list.get(i).getCount() < list.get(j).getCount()) {
CountNumber cn = list.get(i);
list.set(i, list.get(j));
list.set(j, cn);
}
}
}
再定义一个TreeSet集合,同时使用匿名内部类重写compare方法,让CountNumber的类按随机数大小降序排序
TreeSet<CountNumber> set = new TreeSet<>(new Comparator<CountNumber>() {
@Override
public int compare(CountNumber p1, CountNumber p2) {
return -(p1.getNumber() - p2.getNumber());
}
});
再将ArrayList中的集合添加到TreeSet集合中
for(CountNumber cn : list) {
set.add(cn);
}
即可实现统计随机数的个数以及次数从高到低排序和随机数从大到小排序
之前一直觉得集合泛型等是块禁区,现在看来其实集合不过就是增删改查吗。。。。泛型不过也就是规范同一类型的存储,还有匿名内部类也挺容易用的。之前学按钮等事件时一直看不懂匿名内部类是什么鬼,如今也很好理解了。
相关文章
- 暂无相关文章
用户点评