我有两个JSON阵列,我正在梳理它们以获得一个Shuffle数组。
这是我的程序
import java.util.Random;
import org.json.JSONArray;
import org.json.JSONException;
public class Snippet {
public static void main(String[] args) throws JSONException {
String weekArray = "[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"] ";
String numberArray = "[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"] ";
JSONArray allArray = new JSONArray(weekArray).put(numberArray);
JSONArray shuffledArray = shuffleJsonArray(allArray);
System.out.println(shuffledArray);
}
public static JSONArray shuffleJsonArray (JSONArray array) throws JSONException {
// Implementing Fisher–Yates shuffle
Random rnd = new Random();
for (int i = array.length() - 1; i >= 0; i--)
{
int j = rnd.nextInt(i + 1);
// Simple swap
Object object = array.get(j);
array.put(j, array.get(i));
array.put(i, object);
}
return array;
}
}
当我运行上述程序时,输出为
["Saturday","Tuesday","Monday","Friday","[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"] ","Thursday","Sunday","Wednesday"]
请告诉我为什么它不会改组第二阵列?
答案 0 :(得分:1)
第二个数组在第一个数组内。您的改组算法仅更改第一个数组中元素的顺序,以便更改第一个数组中第二个数组的位置。这不会影响第二个数组内部元素的顺序。
此外,第二个数组实际上被视为String
,因此在运行JSONArray
之前,您需要将其转换为shuffleJsonArray
实例。
答案 1 :(得分:0)
您的第二个数组 没有作为数组分配给第一个数组它&#39 ; s只作为一个 String 分配给第一个数组。所以你的shuffle方法( shuffleJsonArray )只改变那个String的索引(位置)(因为第一个数组)它只是一个String而不是一个数组)