У меня есть код, отображаемый ниже, и он просто работает нормально. Но мне было интересно, есть ли другие способы реализовать это? В основном то, что я делаю с 4 циклами, - это сравнение и присвоение нового значения ключу CopyMatrix, который представляет собой связанную хэш-карту внутри массива, если совпадение найдено с использованием строки/элемента в SeqGenerate. У меня было другое решение, которое также является циклом, но оно не работало, поэтому я застрял с этим и мне интересно, есть ли другие способы сделать это с меньшим количеством циклов или, возможно, какие-то другие методы.
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 --------Строка
(1 )Hello World = { He el ll lo o__W Wo or rl ld}
(2 )Hello Earth = { He el ll lo o__E E ar rt th}
Hello World и Hello Earth являются примерами типа текста, содержащегося в SeqGenerate, но они хранятся как последовательность из двух символов, как я проиллюстрировал.copyOfMatrix содержит такую же последовательность, но я сгенерировал ее из другого набора предложений и текстов, но они всегда представляют собой последовательность из двух символов, которые будут сравниваться и заменять значение, если будет найдено совпадение.
Таким образом, единственное, что я знаю, как сравнивать элементы во вложенных циклах, - это создавать циклы for, поэтому, например, я собираюсь сравнить элемент seqGenerate 0 с элементом 1 с ключами, хранящимися в матрице копирования. Если я нашел совпадение, я заменю значение. Надеюсь, это достаточно ясно.
Спасибо за ваше время!