Java:如何将List <integers>转换为相应的字符串

时间:2018-06-16 00:13:22

标签: java

我有一个从JSON收集的整数列表。我想更改这些整数的相应字符串值并打印这些字符串。 例如:如果我的整数列表包含4, 11, 67,我知道4表示英语,11表示孟加拉语,67表示印地语。 所以,我想将它们转换为相应的字符串并将其打印为English, Bengali, Hindi

这是一个类似问题的答案,但我想将整数值更改为相应的字符串值,而不是只打印那些整数:https://stackoverflow.com/a/13198957/9920173

我们将不胜感激。谢谢。

3 个答案:

答案 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