![](/img/trans.png)
[英]How to split an ArrayList<E> into ArrayList<ArrayList<E>>?
[英]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.