有点新的Java和坚持收藏。在这里,我试图生成没有重复的随机数

时间:2015-06-30 01:56:27

标签: java arraylist

这是我的片段。 record [i]是一个具有2个变量id和number的对象。我得到错误意外类型:必需变量;发现:价值。

int Shuffle = 0;
List<Integer> randomID = new ArrayList<Integer>();
List<Integer> randomNumber = new ArrayList<Integer>();

for (int i=0;i<100 ;i++) {
    randomID.add(new Integer(i));
}
Collections.shuffle(randomID);

for (int i=0;i<100000;i++) {
    randomNumber.add(new Integer(i));
}
Collections.shuffle(randomNumber);

for (int i=0;i<length;i++) {
    if (randomID.contains(record[i].ID)) {
        randomID.indexOf(record[i].ID)=null; //ERROR : REQUIRED VARIABLE FOUND VALUE
    }
}
for (int i=0;i<length;i++) {
    if (randomNumber.contains(record[i].getNumber())) {
        randomNumber.indexOf(record[i].getNumber())=null;
    }
}

2 个答案:

答案 0 :(得分:2)

您对randomID.indexOf(record [i] .ID)的调用会返回一些值。你把它放在等号的左边,所以编译器正在寻找可以分配值的东西。它不能为值赋值,它必须有一个变量。

我想你可能意味着将null赋给数组元素的ID:record[i].ID = null;

或者你可能需要索引到randomID:

int index = randomID.indexOf(record[i].ID);
randomID.set(index, null);

但最终会得到一个包含大量空值的列表。这真的是你想要的吗?

无论如何,你的问题是关于错误的。如果您有其他问题,请在其他帖子中提问。

答案 1 :(得分:0)

对于java集合,有几种类型的存储。 List集合允许重复条目。 Set集合不允许重复。

Set  set = new HashSet<Integer>(); //assuming you want Integer
int randomNumberCount = 10
while(set.size() < randomNumberCount) {
    int temp = Math.random() * 100;
    set.add(new Integer(temp));
}

将条目添加到已存在的集合中只会替换它。