我需要编写一个方法,接收包含一堆人名的 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/