List<Data> list = new ArrayList<Data>();
public class Data{
public int n;
public String p;
public Data(int N, String P) {
n = N;
p = P;
}
}
オブジェクトの整数をシャッフルするにはどうすればよいですか: データ. したがって、文字列は同じ位置に留まり、整数はシャッフルされます。
ループして、各オブジェクトの を個別のリストにlist
保存します。を使用してこのリストをシャッフルします。この新しいシャッフルされたリストをループし、対応する各メンバーのフィールドを、シャッフルされたリストで見つかった新しい乱数に設定します。int
Data
Collections.shuffle(...)
n
list
int
おそらく自分でやる必要があります:
for (int i = list.size(); i > 0; i--) {
int j = (int)(Math.random() * (i + 1));
int temp = list.get(i).n;
list.get(i).n = list.get(j).n;
list.get(j).n = temp;
}
Java ライブラリからできる最善の方法は、最初に int のリストと文字列のリストの 2 つのリストに分割し、次に int のみをシャッフルして (Collections.shuffle を使用)、2 つのリストをデータの 1 つのリストに結合することです。
次のようなものを使用できます。
List<Integer> ns = new ArrayList<Integer>(list.size());
for (Data data : list) {
ns.add(data.n);
}
Collections.shuffle(ns);
for (int i = 0; i < list.size(); i++) {
Data data = list.get(i);
int newN = ns.get(i);
data.n = newN;
}
アクセサーと make を使用するのがベスト プラクティスであることに注意しgetN()
てsetN(int)
くださいData.n
private
。