我如何从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键匹配的输入。
答案 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
交换。