ArrayList与TreeList集合统计随机数出现次数

首先定义一个类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);
}

即可实现统计随机数的个数以及次数从高到低排序和随机数从大到小排序


之前一直觉得集合泛型等是块禁区,现在看来其实集合不过就是增删改查吗。。。。泛型不过也就是规范同一类型的存储,还有匿名内部类也挺容易用的。之前学按钮等事件时一直看不懂匿名内部类是什么鬼,如今也很好理解了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值