Skip to content

如何对两个列表进行乱序处理,同时保持它们的一一对应的关系? #20

@bitfishxyz

Description

@bitfishxyz

如何对两个列表进行乱序处理,同时保持它们的一一对应的关系?

已知我们有两个列表

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

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

其中fileList和imgList中的元素是一一对应的。

现在我们希望对两个列表进行随机排序,要求排序后它们依旧是一一对应的。

提示: java.util.Collections可以使得一个列表乱序,但是下面的写法是不可以的:

import java.util.Collections;

public class RandomizeTwoListTest {
   @Test
   public void wrongRandomize(){
        Collections.shuffle(fileList);
        Collections.shuffle(imgList);

        System.out.println(fileList);
        System.out.println(imgList);

        // [H3.txt, M5.txt, H2.txt, H1.txt, M6.txt, M4.txt]
        // [e6.jpg, e3.jpg, e4.jpg, e1.jpg, e2.jpg, e5.jpg]
    }
}

我们可以看到java.util.Collections确实可以使得一个列表乱序,但是上面两次乱序后列表之间失去了一一对应的关系,所以是不行的。

Metadata

Metadata

Assignees

No one assigned

    Labels

    SOStack Overflow相关问答

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions