【发布时间】:2015-06-24 21:51:21
【问题描述】:
我有两个ArrayLists String 类型,想将它们混合如下:
SPK = [A,A,A,B,A,A,A,A,A,B] 和
DA= [ofm,sd,sd,sd,sd,sd,sd,sd,sd,sv]
我需要在其他ArrayList 中创建一些String,如下所示:
SPK_DA = [ofmAsdAsdAB, sdBA, sdAsdAsdAsdAsdAB]
在这个集合中,在 SPK 数组中发生转向(从 A 到 B)之前,我需要将之前的相似元素等同起来。
我写了一个程序,但它增加了一个额外的 sdA(我不知道为什么我不能做这么简单的事情)。
for (int i=0; i <SPK.size()-1; i++){
if (SPK.get(i)==SPK.get(i+1) && (i+1)<= SPK.size()){
speakerChain = DA.get(i)+SPK.get(i);
speakerChain1=DA.get(i+1)+SPK.get(i+1);
SPKTrace.add(speakerChain);
SPKTrace.add(speakerChain1);
}else if (SPK.get(i)!=SPK.get(i+1)){
if (SPKTrace.size()!=0){
SPKTrace.add(SPK.get(i+1));
//SPKString = removeDuplicates (SPKTrace);
String S1 = arrayTostring(SPKTrace);
SPKResource.add(S1);
SPKTrace.clear();
}else {
SPKTrace.add(DA.get(i)+SPK.get(i)+SPK.get(i+1));
//SPKString = removeDuplicates (SPKTrace);
String S1 = arrayTostring(SPKTrace);
SPKResource.add(S1);
SPKTrace.clear();
}
}
}
}
}
System.out.println(SPKResource.toString());
My Output: [ofmAsdAsdAsdAB, sdBA, sdAsdAsdAsdAsdAsdAsdAsdAB]
当我使用 for 循环时,它会创建更多的 sdAs....
【问题讨论】:
-
我不确定你所说的 sdA 是什么意思...
-
@LanguidSquid SPK 是说话者,DA 是每个话语的对话行为; sd 表示说话者 A 发出的对话行为是陈述。
-
我建议发布格式良好的可编译代码。如果您的代码易于阅读并且可以轻松地在本地重现问题,那么理解您的问题会容易得多。老实说,我很难弄清楚如何从这两个数组中生成 SPK_A。
-
能否详细说明这两个数组之间的关系?是
SPK_DA = ["SPK1+DA1", "SPK2+DA2", ...]还是SPK_DA = ["SPK1+DA1", "SPK1+DA2", "SPK2+DA2", "SPK2+DA3", ...]还是别的什么? -
@LanguidSquid 我们有两个对话者,A 和 B。在 DA 集中,我们在对话时有他们的对话行为。例如,在上面的例子中,我展示了 A 和 B 之间对话的 10 句话及其对话行为。 ofm A(嗨),sd A(你很好。),sd A(你好吗?)和 B 开始说话并说“谢谢”,我通过 (sd B) 展示了它。现在我需要知道在 B 开始说话之前,说话者 A 使用了什么对话行为 (DA),我需要 (ofmAsdAsdAB);在 B 再次说话之后,A 开始说话,所以我们将拥有 (sdBA)...这些都是我在上面的 SPK_DA 中展示的转折点
标签: java loops array-merge