【问题标题】:Create Alphabet List from list : Java从列表创建字母列表:Java
【发布时间】:2014-11-24 05:18:34
【问题描述】:

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

fileNamesList

从这个列表中,我想创建一个Alphabet list,比如如果有文件名以A 开头,然后将A 添加到列表中,就像Z 一样,我想以同样的方式创建@987654325 @也来自0 to 9

所有这些字母和数字检查都是基于Starts with from the file name

如何在 java 中做到这一点。

最后是AlphabetList will be like A B E F....ZNumbers list will be 1 2 3 9

谢谢

【问题讨论】:

    标签: java list numbers alphabetical


    【解决方案1】:

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

        List alphabetList = new ArrayList();
        int alpha = (int)fileNameList.charAt(0);
    
        while(alpha <= 90){
            alphabetList.add((char)alpha);
            alpha++;
        }
    

    【讨论】:

      【解决方案2】:

      初始化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')
          }
      }
      

      【讨论】:

      • 太好了,谢谢。它给了我我想要的东西,感谢它起作用了有没有更好的方法来代替内部循环?像递归
      【解决方案3】:

      您可以使用HashMap&lt;Character, List&lt;String&gt;&gt; 来存储带有字符键的列表。这可以为数字和字母提供相同的用途,但如果您出于某种原因希望将它们分开,则可以创建 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);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-06-01
        • 2018-12-17
        • 1970-01-01
        • 1970-01-01
        • 2022-06-24
        • 2019-01-15
        • 2018-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多