Альтернативные способы поиска и присвоения значений в LinkedHashMap внутри ArrayList

У меня есть код, отображаемый ниже, и он просто работает нормально. Но мне было интересно, есть ли другие способы реализовать это? В основном то, что я делаю с 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 с ключами, хранящимися в матрице копирования. Если я нашел совпадение, я заменю значение. Надеюсь, это достаточно ясно.

Спасибо за ваше время!

0
задан dimas 7 July 2012 в 15:24
поделиться