se7 - java arraylist中文




如何以相同的方式隨機化兩個ArrayLists? (6)

不能完全確定你的意思是“自動” - 你可以創建一個包含兩個對象的容器對象:

公共類FileImageHolder {String fileName; 字符串imageName; // TODO:在這裡插入東西}

然後將其放入數組列表中並隨機化該數組列表。

否則,您需要跟踪每個元素在一個列表中移動的位置,並將其移動到另一個列表中。

我有兩個相關的arraylist filelistimgList ,例如與“e1.jpg”相關的“H1.txt”。 如何根據fileList的隨機化自動隨機化imgList的列表? 像在Excel中一樣,如果我們對某個列進行排序,另一列將自動跟隨?

String [] file = {"H1.txt","H2.txt","H3.txt","M4.txt","M5.txt","M6.txt"};
ArrayList<String> fileList = new ArrayList<String>(Arrays.asList(file));

String [] img = {"e1.jpg","e2.jpg","e3.jpg","e4.jpg","e5.jpg","e6.jpg"};
ArrayList<String> imgList = new ArrayList<String>(Arrays.asList(img));

//randomized files
Collections.shuffle(fileList);

隨機化後輸出,例如:

fileList = {"M4.txt","M6.txt","H3.txt","M5.txt","H2.txt","H1.txt"};

預期產出:

 imgList = {"e4.jpg","e6.jpg","e3.jpg","e5.jpg","e2.jpg","e1.jpg"};

你可以用地圖來做到這一點:

Map<String, String> fileToImg:
List<String> fileList = new ArrayList(fileToImg.keySet());
Collections.shuffle(fileList);
for(String item: fileList) {
    fileToImf.get(item);
}

這將以隨機順序遍歷圖像。


將它們包裝在另一個類中,以便最終生成一個數組或List對象。

public class Data {
    private String txtFileName;
    private String imgFileName;

    // Add/generate c'tor, getter/setter, equals, hashCode and other boilerplate.
}

用法示例:

List<Data> list = new ArrayList<Data>();
list.add(new Data("H1.txt", "e1.jpg"));
list.add(new Data("H2.txt", "e2.jpg"));
// ...

Collections.shuffle(list);

您可以創建一個包含數字0到5的數組並對其進行洗牌。 然後將結果用作“oldIndex - > newIndex”的映射,並將此映射應用於您的原始數組。


而不是有兩個字符串數組,有一個包含您的兩個字符串的自定義類的數組。


這可以使用shuffle方法完成:

private List<Integer> getJumbledList() {
     List<Integer> myArrayList2 = new ArrayList<Integer>();
        myArrayList2.add(8);
        myArrayList2.add(4);
        myArrayList2.add(9);
        Collections.shuffle(myArrayList2);
        return myArrayList2;




arraylist