Хотите объединить значение одной карты с ключом другой карты - PullRequest
0 голосов
/ 20 мая 2019

Я хочу объединить значение одной карты с ключом другой карты и добавить их в список. Сравните значение на основе ключа первой карты со значением другой карты. например:

map1= {37=core__error_code_based, 153=core__app_dialog, 123=core__date}


map2={copy_2=37,button_back=37,button_cancel=153,button_confirm=153}

Мой подход заключается в первом цикле, я получаю ключ map1, а затем во втором цикле повторяем значения map2 на основе ключа map1. Так что я получаю значение map1 и ключ map2 и позже объединяю в строку.

List<String> finalKey=new ArrayList<>();
        Iterator<Map.Entry<String,String>> entrySet=map1.entrySet().iterator();
        Iterator<Map.Entry<String,String>> pageKey=map2.entrySet().iterator();
        while(entrySet.hasNext()){
            Map.Entry<String,String> entry = entrySet.next();
            Map.Entry<String,String> pageValue = pageKey.next();

            while(entry.getKey()==pageValue.getValue()){
                finalKey.add(entry.getValue()+"__"+pageValue.getKey());
            }
        }

Я пытался использовать итератор и набор записей для итерации по обеим картам, но безуспешно

{core__error_code_based__copy_2, core__error_code_based__button_back, core__app_dialog__button_confirm, core__app_dialog__button_cancel}

1 Ответ

0 голосов
/ 21 мая 2019

Ну, я добился этого, используя


public class translatekeyName {
    static List<String> finalString = new ArrayList<>();

    public static Map<String, String> initialMap() {
        Map<String, String> map1 = new HashMap<>();
        map1.put("37", "core__error_code_based");
        map1.put("153", "core__app_dialog");
        return map1;
    }

    public static Map<String, String> secondMap() {
        Map<String, String> map2 = new HashMap<>();
        map2.put("copy_2", "37");
        map2.put("button_back", "37");
        map2.put("button_cancel", "153");
        map2.put("button_confirm", "153");
        return map2;
    }

    public List<String> concatenateString(Map page, Map source) {
        Map<String, String> moduleKey = page;
        Map<String, String> pageKey = source;
        List<String> temp;

        Iterator<Map.Entry<String, String>> entrySet = page.entrySet().iterator();
        Iterator<Map.Entry<String, String>> pageKeyset = source.entrySet().iterator();
        for (String value : moduleKey.keySet()) {
            temp = getallKeys(source, value);
            String tempValue = moduleKey.get(value);
            for (int i = 0; i < temp.size(); i++) {
                tempValue += "__" + temp.get(i);
                finalString.add(tempValue);
            }

        }

        return finalString;
    }

    static <K, V> List<K> getallKeys(Map<K, V> mapOfWords, V value) {
        List<K> keylist = null;


        if (mapOfWords.containsValue(value)) {

            keylist = new ArrayList<>();

            for (Map.Entry<K, V> entry : mapOfWords.entrySet()) {

                if (entry.getValue().equals(value)) {
                    keylist.add(entry.getKey());
                }
            }
        }

        return keylist;
    }

    public static void main(String[] args) {
        translatekeyName obj = new translatekeyName();
        obj.concatenateString(initialMap(), secondMap());
        System.out.println(finalString);
    }

}
...