从列表创建字母表列表:Java

时间:2014-11-24 05:18:34

标签: java list numbers alphabetical

我有一个列表,其中包含来自给定路径的文件名

fileNamesList

并且从此列表中我想创建一个Alphabet list,如果文件名以A开头,则将A添加到列表中,并像Z一样添加到Numbers List并以相同的方式我还要从0 to 9

创建Starts with from the file name

所有这些字母和数字检查都基于AlphabetList will be like A B E F....Z

如何在java中执行此操作。

最后是Numbers list will be 1 2 3 9和{{1}}

感谢

3 个答案:

答案 0 :(得分:2)

同样,您也可以为数字添加逻辑

    List alphabetList = new ArrayList();
    int alpha = (int)fileNameList.charAt(0);

    while(alpha <= 90){
        alphabetList.add((char)alpha);
        alpha++;
    }

答案 1 :(得分:1)

您可以使用HashMap<Character, List<String>>存储带有字符键的列表。这可以用于数字和字母,但如果由于某种原因希望它们分开,你可以创建2个地图。

private HashMap<Character, List<String>> alphabetList = new HashMap<>();

public void addFileName(String fileName) {
    if(fileName.isEmpty()) {
        return;
    }

    Character firstChar = Character.toUpperCase(fileName.charAt(0));

    List<String> storedList = alphabetList.get(firstChar);
    if(storedList == null) {
        storedList = new ArrayList<String>();
        alphabetList.put(firstChar, storedList);
    }
    storedList.add(fileName);
}

答案 2 :(得分:1)

初始化AlphabetList后:

for (int i = 'A'; i <= 'Z'; i++)
    for (fileName: fileNameList) {
        if ((int)fileName.charAt(0) == i) {
            AlphabetList.add((char)i);
        }
    }
}

你可以为NumbersList做类似的事情。

可替换地:

occurrences = new int[256];
for (fileName: fileNameList) {
    occurrences[(int)fileName.charAt(0)] += 1;
}
for (int i = 'A', i <= 'Z'; i++) {
    if (occurrences[i] > 0) {
        AlphabetList.add((char)i)
    }
}
for (int i = '0', i <= '9'; i++) {
    if (occurrences[i] > 0) {
        NumberList.add(i - '0')
    }
}