我有一个从JSON收集的整数列表。我想更改这些整数的相应字符串值并打印这些字符串。
例如:如果我的整数列表包含4, 11, 67
,我知道4表示英语,11表示孟加拉语,67表示印地语。
所以,我想将它们转换为相应的字符串并将其打印为English, Bengali, Hindi
。
这是一个类似问题的答案,但我想将整数值更改为相应的字符串值,而不是只打印那些整数:https://stackoverflow.com/a/13198957/9920173
我们将不胜感激。谢谢。
答案 0 :(得分:5)
更简单的方法是使用HashMap
并将整数存储为键,将String存储为值。像这样:
HashMap<Integer, String> languages = new HashMap<>(); {{
languages.put(4, "English");
languages.put(11, "Bengali");
//Etc
}}
然后,当您想要打印出相应的字符串时,您可以这样做:
System.out.println(languages.get(4));
//Prints "English"
编辑:
您可以沿着这些行执行某些操作来打印每个相应的字符串。
for(int num: yourList) {
System.out.println(languages.get(num));
}
答案 1 :(得分:1)
创建枚举类型以表示枚举类型的序数为整数值的所有语言。
enum Language{
ASSAMESE,
...
ENGLISH//4th item
...
BENGALI//11th item
...
HINDI//67th item
...}
要通过整数值获取语言,请说n:
Language.values()[n-1];
如果您没有所有整数值的语言(例如1,2,3,... n),您可以使用以下代码:
public enum Language {
ASSAMESE(1),
ENGLISH(4),
HINDI(67);
private int langId;
Language(int langId) {
this.langId = langId;
}
public int getLangId() {
return langId;
}
public void setLangId(int langId) {
this.langId = langId;
}
public static Language getLanguageById(int langId) {
for(Language lang : values()) {
if(lang.getLangId() == langId) {
return lang;
}
}
return null;
}
}
答案 2 :(得分:0)
您可以在HashMap
中使用数字到语言映射。然后就可以像使用Java 8一样实现,
List<Integer> numbers = Arrays.asList(4, 11, 67);
Map<Integer, String> languageMap = new HashMap<>();
languageMap.put(4, "English");
languageMap.put(11, "Bengali");
languageMap.put(67, "Hindi");
String langStr = numbers.stream().map(languageMap::get).collect(Collectors.joining(", "));
解决同样问题的可能必要方法就是这样。
StringJoiner joiner = new StringJoiner(", ");
for (Integer number : numbers) {
joiner.add(languageMap.get(number));
}
System.out.println(joiner.toString());
后一种解决方案仍然需要使用Java 8,因为Java 8中提供了StringJoiner
。