我有一个对象列表,每个对象都有一些“qid”。qid
是整数。列表的“qid”从任何不说的“min”开始,到任何不说的“max”结束。请注意,列表中对象的“qid”不是连续的。意味着例如:min = 6 和 max = 31 但其中只有 16 个对象,它们的 qid 在[min,max]
(min 和 max 都包括)因此没有任何对象存在,没有 (31-6+1)-16 = 10 qids。意思是这十个qid,没有任何对象存在。然而,只有 16 个对象具有有效的 qid。
现在我有一个大小为 10 的 int 数组,我想在其中随机存储 10 个对象,但它们的 qid 有效。表示这十个对象必须来自这 16 个而不是来自这 26 个。
我正在做以下事情
for (int j = 0; j < 10; j++) {
checkList[j] = min + (int) (Math.random() * ((max - min) + 1));
if (qidList.get(checkList[j]) == null ) {
j--;
continue;
} else {
finalList.add(j,qidList.get(checkList[j]));
}
}
- qidList = 原始列表,包含 16 个有效对象和有效 qid 的 26 个对象,最大值 = 31,最小值 = 6。
- finalList = 将存储随机选择的 10 个对象(26 个中的 16 个不是)的最终列表。
- checkList = 大小为 10 的整数数组,其中仅存储随机选择的 10 个 finalList 对象的 qid(而不是其他属性)。
我越来越indexoutofboundsexception
。有人能帮我吗?