我在下面显示了一个代码,它工作正常。但我想知道是否还有其他方法可以实现这一点?基本上,我对 4 个循环所做的是比较并为 CopyMatrix 的键分配一个新值,如果使用 SeqGenerate 中的字符串/元素找到匹配项,则该键是数组列表中的一个linkedhashmap。我有另一个解决方案,它也是一个循环,但它没有工作,所以我坚持这个,我想知道是否有其他方法可以用更少的循环或其他一些技术来做到这一点。
ArrayList<ArrayList<String>> SeqGenerate = new ArrayList<ArrayList<String>>();
ArrayList<LinkedHashMap<String, Double>> copyOfMatrix = new ArrayList<LinkedHashMap<String, DOuble>>();
ArrayList<LinkedHashMap<String, Double>> calcLogProb = new ArrayList<LinkedHashMap<String, DOuble>>();
for (ArrayList<String> getArray: SeqGenerate){
LinkedHashMap<String, Double> tempVal = new LinkedHashMap<String, Double>();
for (String getString: getArray){
for (LinkedHashMap<String, Double> entries: copyOfMatrix){
Iterator <String> iterKey = entries.keySet().iterator();
Iterator <Double> iterVal = entries.values().iterator();
while (iterKey.hasNext()){
String keyVal = iterKey.next();
Double Value = iterVal.next();
if (getString.equals(keyVal)){
Double temp = Value;
if (temp==0){
temp=0.00000001;
}
Double seqVal = Math.abs(Math.log10(temp));
tempVal.put(keyVal, seqVal);
}
}
}
}
calcLogProb.add(tempVal);
}
编辑
好的,我正在尝试做的是这样的: SeqGenerate 包含此元素
ArrayList -------- String
(1)Hello World = { He el ll lo o_ _W Wo or rl ld}
(2)Hello Earth = { He el ll lo o_ _E Ear rt th}
Hello World 和 Hello Earth 是 SeqGenerate 中包含的文本类型的一个示例,但它们存储为两个字符序列,如我所示。copyOfMatrix 包含相同类型的序列,但我从另一组句子和文本生成它,但它们始终是两个字符的序列,如果找到匹配项,它们将比较并替换该值。
因此,我唯一知道如何比较嵌套循环中的元素是制作 for 循环,例如,我将 seqGenerate element 0 element 1 与存储在复制矩阵中的键进行比较。如果我找到匹配项,我将替换该值。希望这足够清楚。
谢谢你的时间!