簡體   English   中英

Arraylist分成-

[英]Arraylist split in -

我有一個數組列表:

ArrayList<String> allText = new ArrayList<String>();

它的內容是這樣的:

[Alabama - Montgomery, Alaska - Juneau, Arizona - Phoenix, Arkansas - Little Rock, California - Sacramento, Colorado - Denver]

我如何將其拆分為2個數組列表,例如:

List<String> states = new ArrayList<>(); : [Alabama, Alaska, Arizona, Arkansas]

List<String> capitals = new ArrayList<>(); : [Montgomery, Juneau, Phoenix, Little Rock]

我有這個但是它不起作用,它在allText上給我一個錯誤(掃描儀=新的Scanner(allText);),它需要一個字符串而不是一個arraylist:

 Scanner scanner = new Scanner(allText);

    List<String> states = new ArrayList<>();
    List<String> capitals = new ArrayList<>();

    while (scanner.hasNextLine()) {
        String[] parts = scanner.nextLine().split(" - ");
        states.add(parts[0]);
        capitals.add(parts[1]);
    }

它在allText上給我一個錯誤(掃描儀掃描儀= new Scanner(allText);),它需要一個字符串而不是一個arraylist

由於您要將ArrayList對象傳遞給Scanner 但是沒有這樣的構造函數。

掃描器

    for(String str:allText)
    {
    String[] parts = str.split(" - ");
    states.add(parts[0]);
    capitals.add(parts[1]);
    }

需要for循環來遍歷allText 由於它的List

您正在嘗試使用Scanner瀏覽List所有元素。 掃描程序僅適用於單個String,而不適用於它們的列表,因為它具有List<String>而不是String 您想要做的就是遍歷列表中的元素:

for(String stateAndCapital : allText){
    String[] parts = stateAndCapital.split(" - ");
    states.add(parts[0]);
    capitals.add(parts[1]);
}

我將使用String.split(String) (其中參數是一個正則表達式, \\\\s+是一個或多個空格。如果它應該是可選的空格,則可以使用\\\\s* )。 然后將資本和州添加到其各自的列表中。 然后,我將同時顯示格式化的IO。 在Java 7+中,您可以使用diamond運算符 就像是

List<String> allText = Arrays.asList("Alabama - Montgomery",
        "Alaska - Juneau", "Arizona - Phoenix",
        "Arkansas - Little Rock", "California - Sacramento",
        "Colorado - Denver");
List<String> states = new ArrayList<>();
List<String> capitals = new ArrayList<>();
for (String both : allText) {
    String[] arr = both.split("\\s+-\\s+");
    states.add(arr[0]);
    capitals.add(arr[1]);
}
for (int i = 0; i < states.size(); i++) {
    String state = states.get(i);
    String capital = capitals.get(i);
    System.out.printf("The capital of %s is %s%n", state, capital);
}

暫無
暫無

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

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