洗牌列表/运行 通过数组项/一分为二的方法
Shuffle list / run through array items / divide method in two
我正在编写一个函数,通过随机列表显示图像。
private int measurementCount = 0;
public int createShuffledList(){
List<Integer> indexes = new ArrayList< >();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
Log.d("QD", "Shuffled index: " + indexes);
int randomPrimeNumber = (int) indexes.get(measurementCount);
Log.d("QD", "Value from index: " + randomPrimeNumber);
primeindex = randomPrimeNumber;
Log.d("QD", "Vale of primeindex index: " + primeindex);
return primeindex;
}
会发生什么?
- 已创建随机列表 "indexes"
- randomPrimenumber 是位置 0 上的项目的编号。
- primeindexreturns数量
另一种方法是将 +1 添加到 "measurementCount"。现在应该返回混洗列表 "indexes" 的第二项 (primeindex)。
再次调用该方法会再次打乱 "indexes" 数组(无意)。
所以我想把方法分成两部分。 "shuffle index" 的部分应该被调用一次(onCreate),"get the next item" 的部分应该被调用多次(在一个循环中取决于测量计数)。所以我写错了代码应该发生什么:
调用一次(oncreate):
public int createShuffledList(){
List<Integer> indexes = new ArrayList< >();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
Log.d("QD", "Shuffled index: " + indexes);
handoverIndex = indexes;
return handoverIndex;
}
调用多次,measurementCount +1:
public int getNextShuffledListItem(){
int randomPrimeNumber = (int) handoverIndex.get(measurementCount);
Log.d("QD", "Value from index: " + randomPrimeNumber);
primeindex = randomPrimeNumber;
Log.d("QD", "Vale of primeindex index: " + primeindex);
return primeindex;
}
是否可以将打乱后的数组交给下一个遍历数组项的方法?
最好,提前致谢
老虎代码
是的,你可以做到,你的方法(函数)需要return整数列表
public List<Integer> createShuffledList(){
List<Integer> indexes = new ArrayList< >();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
Log.d("QD", "Shuffled index: " + indexes);
return indexes;
}
在您的 getNextShuffledListItem()
方法中调用列表的特定元素
indexes.get(yourIndex);
注意 IndexOutOfBoundsException
,您不能调用超出列表大小的索引。
=============更新
一些class如何使用你的方法
public class ExampleShuffledList {
private static final int MEASUEREMENTREPEATS = 10;
List<Integer> yourList;
int measurementCount;
public List<Integer> createShuffledList(){
List<Integer> indexes = new ArrayList<>();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
return indexes;
}
public void someMethodWhereYouWantToUseList(){
yourList = createShuffledList();
measurementCount = 0; //you declere it somehow
Integer yourShuffledIndex = yourList.get(measurementCount); //just call get to get the index from list
}
}
我正在编写一个函数,通过随机列表显示图像。
private int measurementCount = 0;
public int createShuffledList(){
List<Integer> indexes = new ArrayList< >();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
Log.d("QD", "Shuffled index: " + indexes);
int randomPrimeNumber = (int) indexes.get(measurementCount);
Log.d("QD", "Value from index: " + randomPrimeNumber);
primeindex = randomPrimeNumber;
Log.d("QD", "Vale of primeindex index: " + primeindex);
return primeindex;
}
会发生什么?
- 已创建随机列表 "indexes"
- randomPrimenumber 是位置 0 上的项目的编号。
- primeindexreturns数量
另一种方法是将 +1 添加到 "measurementCount"。现在应该返回混洗列表 "indexes" 的第二项 (primeindex)。
再次调用该方法会再次打乱 "indexes" 数组(无意)。
所以我想把方法分成两部分。 "shuffle index" 的部分应该被调用一次(onCreate),"get the next item" 的部分应该被调用多次(在一个循环中取决于测量计数)。所以我写错了代码应该发生什么:
调用一次(oncreate):
public int createShuffledList(){
List<Integer> indexes = new ArrayList< >();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
Log.d("QD", "Shuffled index: " + indexes);
handoverIndex = indexes;
return handoverIndex;
}
调用多次,measurementCount +1:
public int getNextShuffledListItem(){
int randomPrimeNumber = (int) handoverIndex.get(measurementCount);
Log.d("QD", "Value from index: " + randomPrimeNumber);
primeindex = randomPrimeNumber;
Log.d("QD", "Vale of primeindex index: " + primeindex);
return primeindex;
}
是否可以将打乱后的数组交给下一个遍历数组项的方法?
最好,提前致谢 老虎代码
是的,你可以做到,你的方法(函数)需要return整数列表
public List<Integer> createShuffledList(){
List<Integer> indexes = new ArrayList< >();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
Log.d("QD", "Shuffled index: " + indexes);
return indexes;
}
在您的 getNextShuffledListItem()
方法中调用列表的特定元素
indexes.get(yourIndex);
注意 IndexOutOfBoundsException
,您不能调用超出列表大小的索引。
=============更新 一些class如何使用你的方法
public class ExampleShuffledList {
private static final int MEASUEREMENTREPEATS = 10;
List<Integer> yourList;
int measurementCount;
public List<Integer> createShuffledList(){
List<Integer> indexes = new ArrayList<>();
for (int i = 1; i <= MEASUEREMENTREPEATS; i++) {
indexes.add(i);
}
Collections.shuffle(indexes);
return indexes;
}
public void someMethodWhereYouWantToUseList(){
yourList = createShuffledList();
measurementCount = 0; //you declere it somehow
Integer yourShuffledIndex = yourList.get(measurementCount); //just call get to get the index from list
}
}