从hasmap交换值和键

时间:2017-11-02 11:30:16

标签: java dictionary hashmap stringbuilder

我如何从hashmap交换值和键,用户从键盘给stringbuilder并用java中的新值替换stringbuilder中的一个单词?Ι想要反向trasnlation slang internet的字典。例如,如果我给了这个字符串“笑声和lound“在tsanlation之后我想要字符串”loI“。我创建了一个hasmap,这是我的字典并包含这个值{fyi”,“为了你的信息”);(“dae”,“有没有其他人”);( “thx”,“谢谢你”);(“omg”,“噢,我的上帝”);(“lol”,“笑出来的lound”);同样,如果用户给予输入字符串“笑出来并且lound”采取oytput“lol”。

我的代码是:          package javaapplication6;

      import java.util.*; 
       import java.util.ArrayList; 
        import java.util.HashMap;
      import java.util.Scanner;

public class JavaApplication6 {

/**
 * @param args the command line arguments
 */

public static void main(String[] args) {



                       String threeWords;

                        //create stringbuilder
                        StringBuilder acronym = new StringBuilder();

                        Scanner scan = new Scanner(System.in);

                       //o xrhsths dinei eisodo thn protash poy thelei na metafrasei
                        System.out.println("Eisigage thn protasi sou pou theleis na metafraseis:\n ");
                        threeWords = scan.nextLine();
                        threeWords = threeWords.toLowerCase(); //Changing it to lower case
                          acronym.append(threeWords);
                           System.out.println(" To string pou eisigages einai: " + acronym +"\n");
                        //dhmiougroum ena pinaka pou periexei mia mia thn lejei jexorista apo thn protash pou 
                        //edose o xrhsths oste na mporoume na broume pio eukola thn leji pou einai gia metafrash sto
                        //lejiko
                        String[] threeWordsArray = threeWords.split(" ");

                        //dhmiougria lejikou me thn slang tou internet me thn xrisi hashmap
                        HashMap<String,String> dictionary = new HashMap <String,String>(10);

               //Prosthiki lejeon  sto lejiko mas

                        dictionary.put("fyi", "for your information");
                        dictionary.put("dae", "Does anyone else");
                        dictionary.put("thx","thank you");
                        dictionary.put("omg","Oh my god");
                        dictionary.put("lol","laughing out lound");



                        HashMap<String, String> reversedHashMap = new HashMap<String, String>();
                               for (String key : dictionary.keySet()){
                                 reversedHashMap.put(dictionary.get(key), key);
                                 } 


                            System.out.println("reversedHasmap"+reversedHashMap);
                            for(String word : threeWordsArray) {


                           if (reversedHashMap.containsKey(word)) {

                            String definition = reversedHashMap.get(word);
            System.out.println("h metafrash einai: \n" + definition);

                            int index=acronym.indexOf(word);
                            System.out.println("index:"+index);
                            acronym.insert(index,definition);
                         }
            else {
            System.err.println("Word not found");

                            }//end if

                        }//end for  

                       System.out.println("To string metafrasmeno einai: " + acronym);





}

}

但我有问题      for(String word:threeWordsArray){

                           if (reversedHashMap.containsKey(word)) {

                            String definition = reversedHashMap.get(word);
            System.out.println("h metafrash einai: \n" + definition);

                            int index=acronym.indexOf(word);
                            System.out.println("index:"+index);
                            acronym.insert(index,definition);
                         }
            else {
            System.err.println("Word not found");

                            }//end if

                        }//end for  

无法找到与reversedHashMap键匹配的输入。

2 个答案:

答案 0 :(得分:1)

您可以遍历任何包含对象(类型)的地图(mapToConvert)。这些类型可以是字符串,整数等。

通过循环访问条目集中的每个条目,您可以同时提取密钥entry.getKey()及其与entry.getValue()配对的值。然后,您可以创建新地图,将值用作键,将键用作值。

HashMap<Type,Type> newMap = new HashMap<>();
for(Map<Type,Type> entry : mapToConvert.entrySet()){
  Type key = entry.getKey();
  Type values = entry.getValue();
   newMap.put(values, key);
}

编辑:为清楚起见。

答案 1 :(得分:0)

假设HashMap中没有重复的值

HashMap<Object, Object> given = new HashMap<>();
HashMap<Object, Object> result = new HashMap<>();
for (String i : ex.keySet()){
    result.put(given.get(i), i);
}

result将是一个HashMap,其键和值从given交换。