0
このプログラムは、ソースリストをペアでシャッフルします。元のリストのようになぜ何度も配列を作成する必要がありますか?
「1」「2」「3」「4」「5」「6」「7」「8」「9」「10」 "11"、 "12"、 "13"、 "14"、 "15"、 "16"、 "17"、 "18"、 "19"、 "20"
に
trasfoms
11^12 19^20 17^18 15^16 1^2 5^6 3^4~13^14 7^8 9^10
以上が真つつある行はコメントを外しているコメント。今、行Aがコメントされている場合、shuffleListのすべての要素は19^20
です。
public class ShuffleService {
public static void shuffleList(List<String> list) {
System.out.println(list);
ArrayList<String[]> shuffleList = new ArrayList<String[]>(10);
String[] arr = new String[2];
boolean flag = false;
int step = 0;
for(String s: list){
if(flag){
arr[1]=s;
} else {
arr[0]=s;
}
flag=!flag;
step++;
if(step==2){
shuffleList.add(arr);
step=0;
//arr = new String[2]; //**line A**
}
}
Collections.shuffle(shuffleList);
for(String[] val: shuffleList){
System.out.print(val[0]);
System.out.print("^");
System.out.println(val[1]);
}
}
public static void main(String[] args) {
String[] a = new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"};
List<String> list1 = Arrays.asList(a);
shuffleList(list1);
}
}
は、なぜ私が正しく動作するプログラムでA行のコメントを解除する必要がありますか?
それ以外の場合は、参照によって1つのオブジェクト(単数配列)の値を変更するためです。 –