如何在java中混合2个列表

Posted

技术标签:

【中文标题】如何在java中混合2个列表【英文标题】:How can I mix 2 lists in java 【发布时间】:2016-03-16 21:39:05 【问题描述】:

我有一个列表,例如:Daniel,Michael,Kate,还有一个:Daniel,Michael,Kate。我想要的是制作第三个列表,例如:Daniel-Kate,Kate-Michael,Michael-Daniel。我想将它们混合在一起制作一个新的列表,其中它们的元素混合在一起?我试过这个:

int start2;

//do a check here
for (int i = 0; i < lista.size(); i++) 
    start2 = random.nextInt(lista2.size() - 0) + 0;
    if (lista2.get(start2).equals(lista.get(i))) 
        i--;
     else 
        listaParejas.add(lista.get(i) + "->" + lista2.get(start2));
        listaSalidos.add(lista2.get(start2));
        lista2.remove(start2);
    


for (int i = 0; i < listaParejas.size(); i++) 
    Toast.makeText(getApplicationContext(), listaParejas.get(i), Toast.LENGTH_LONG).show();

有时它会崩溃,或者我总是遇到同一对。有什么建议吗?

【问题讨论】:

【参考方案1】:

您的方法在我看来有点容易出错。首先打乱两个列表然后一个一个地获取它们各自的元素会容易得多,如下所示:

Collections.shuffle(list1);
Collections.shuffle(list2);

for (int i = 0; i < Math.min(list1.size(), list2.size()); i++) 
    list3.add(list1.get(i) + "-" + list2.get(i));

【讨论】:

【参考方案2】:

使用这个:

Collections.addAll(lista, lista2); // Join the 2 lists
Collections.shuffle(lista); // shuffle the result list

【讨论】:

以上是关于如何在java中混合2个列表的主要内容,如果未能解决你的问题,请参考以下文章

java 如何对中英文和符号数字混合的字符串进行截取,其中包含各种括号( ( [ < >] ) )?

Android:如何混合 2 个音频文件并使用 soundPool 重现它们

如何生成包含连续数字和字母的混合列表?

定义 2 个独立、重叠的画布如何混合

如何从python中的混合数据类型列表中删除nan(float)项目[重复]

NAudio 使用 WaveMixerStream32() 混合 2 两个音频->如何让第二个音频稍后开始