如何以相同的方式随机化两个ArrayLists?

如何以相同的方式随机化两个ArrayLists?

我有两个arraylist filelist并且imgList彼此相关,例如与“e1.jpg”相关的“H1.txt”。如何自动随机名单imgList根据随机化fileList?就像在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 filesCollections.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"};


炎炎设计
浏览 535回答 3
3回答

慕田峪9158850

将它们包装在另一个类中,以便最终得到单个数组或List这些对象。public&nbsp;class&nbsp;Data&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;txtFileName; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;String&nbsp;imgFileName; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Add/generate&nbsp;c'tor,&nbsp;getter/setter,&nbsp;equals,&nbsp;hashCode&nbsp;and&nbsp;other&nbsp;boilerplate.}用法示例:List<Data>&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<Data>();list.add(new&nbsp;Data("H1.txt",&nbsp;"e1.jpg"));list.add(new&nbsp;Data("H2.txt",&nbsp;"e2.jpg"));//&nbsp;...Collections.shuffle(list);

largeQ

最简单的方法是将两个值封装在一起包含图像和文件的类型中。然后建立一个ArrayList的那个和洗牌了。这也改善了封装,为您提供了自动拥有与图像相同数量的文件的属性。如果你真的不喜欢这个想法,另一种选择就是自己编写shuffle代码(在Java中有很多改进的Fisher-Yates shuffle的例子,包括我怀疑的Stack Overflow上的几个)并且只在两个列表上运行同一时间。但我强烈建议采用“改进封装”方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java