有没有一种方法可以根据包含在数组内部的名称拆分字符串ArrayList?

时间:2019-07-23 23:15:20

标签: java arrays arraylist

我需要编写一个方法,该方法接收包含一堆人名的ArrayList,然后根据名称的第一个字母将此ArrayList分成较小的ArrayList。诸如“ Aaron,Albert,Ana”之类的名称必须放在ArrayList上,“ Bart,Bob,Billy”之类的名称必须位于另一个列表上。然后,我需要提供一个包含所有较小列表的列表。我需要为此编写一个JUnit测试。这是在Java初学者课程中进行的练习:(这让我发疯。

我尝试编写“ 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” ...等]]

1 个答案:

答案 0 :(得分:0)

尝试一下。

      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);