如何以相同的方式随机化两个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"};
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
将它们包装在另一个类中,以便最终得到单个数组或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);
largeQ
TA贡献2039条经验 获得超7个赞
最简单的方法是将两个值封装在一起包含图像和文件的类型中。然后建立一个ArrayList
的那个和洗牌了。
这也改善了封装,为您提供了自动拥有与图像相同数量的文件的属性。
如果你真的不喜欢这个想法,另一种选择就是自己编写shuffle代码(在Java中有很多改进的Fisher-Yates shuffle的例子,包括我怀疑的Stack Overflow上的几个)并且只在两个列表上运行同一时间。但我强烈建议采用“改进封装”方法。
添加回答
举报
0/150
提交
取消