簡體   English   中英

有沒有一種方法可以根據包含在數組內部的名稱拆分String ArrayList?

[英]Is there a way to split a String ArrayList based on the names that contains inside of the array?

我需要編寫一個方法來接收包含一堆人名的ArrayList,然后根據名稱的第一個字母將此ArrayList分成較小的ArrayLists。 諸如“ 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” ...等]]

嘗試這個。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM