为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2019-08-06 15:14:19
如何以相同的方式随机化两个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);


查看完整回答
反对 回复 2019-08-06
?
largeQ

TA贡献2039条经验 获得超7个赞

最简单的方法是将两个值封装在一起包含图像和文件的类型中。然后建立一个ArrayList那个和洗牌了。

这也改善了封装,为您提供了自动拥有与图像相同数量的文件的属性。

如果你真的不喜欢这个想法,另一种选择就是自己编写shuffle代码(在Java中有很多改进的Fisher-Yates shuffle的例子,包括我怀疑的Stack Overflow上的几个)并且只在两个列表上运行同一时间。但我强烈建议采用“改进封装”方法。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 534 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信