java - 有没有办法根据数组内部包含的名称拆分 String ArrayList?

标签 java arrays arraylist

我需要编写一个方法,接收包含一堆人名的 ArrayList,然后根据名字的第一个字母将此 ArrayList 分成更小的 ArrayList。像“Aaron、Albert、Ana”这样的名字必须放在一个 ArrayList 上,“Bart、Bob、Billy”必须放在另一个 ArrayList 上。然后我需要呈现一个包含所有这些较小列表的列表的列表。我需要为此编写一个 JUnit 测试。这是针对初学者 Java 类(class)的练习:( 这让我发疯。

我尝试编写“for 循环”来检查每个单词的起始字符,但这一定是更好的方法。

这是将用作该方法的参数的列表:

public List<String> namesList() {
    List<String> names = new ArrayList<String>();
    names.add("ANA");
    names.add("ANA BEATRIX");
    names.add("JOE");
    names.add("WALTER");
    names.add("ROBERT");
    names.add("RODNEY");
    names.add("RUDOLPH");
    names.add("VAGNER");
    names.add("JOSE");
    names.add("CLEITON");
    names.add("MARIA");
    names.add("MARK");

    return names;
}

然后我尝试编写如下方法:

public List<List<String>> separateNames(List<String> names) {
    Collections.sort(names);
    for (String s : name)
    {
       if (s.charAt(0) == 'A') {
           // then create an ArrayList to store names starting with A
       }

    }
}

结果应该是列表中的列表,例如 [["Aaron", "Albert", "Ana"], ["Bart", "Bob", "Billy"... 等等]]

最佳答案

试试这个。

      List<List<String>> list = names.stream().collect(
            Collectors.groupingBy(str -> str.substring(0, 1),
                  Collectors.toList())).values().stream().collect(
                        Collectors.toList());
      System.out.println(list);

关于java - 有没有办法根据数组内部包含的名称拆分 String ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57173306/

相关文章:

java - 带有Gradle和Eclipse的MapStruct无法正常工作

java - 将 char 返回到 main 方法

javascript - 如何将处理程序事件添加到数组中

java - 清除 ArrayList 是否保留其容量

java - NumberOpsDriver.java :35: error: no suitable method found for add(int)

java - Java 中处理大型对象列表的线程

java - 用改变 StopX 和 StopY 的位图画线

java - (BouncyCasSTLe 错误 : min may not be greater than max ) implementation of El-Gamal algorithm using java

c - 数组已填充最后一个元素

c++ - 编码(marshal)处理结构(包含数组)作为返回值