簡體   English   中英

如何將ArrayList拆分為兩個新的ArrayList?

[英]How can I split an ArrayList into two new ArrayLists?

我在ArrayList上包含以下數據: 13-ITEM,14-ITEM,15-ITEMGROUP (以連字符(-)作為分隔符)。
我想將此列表拆分為兩個新的ArrayLists

  • 包含ID的ArrayList-1[13,14,15..]
  • 包含字符串的ArrayList-2[ITEM,ITEM,ITEMGROUP...]

我是Java新手。 提前致謝。

您可以使用String#indexOf(char)在分隔符的String中找到索引,然后使用String#substring提取子字符串,如下所示:

List<String> list = Arrays.asList("13-ITEM","14-ITEM","15-ITEMGROUP");
List<String> list1 = new ArrayList<>(list.size());
List<String> list2 = new ArrayList<>(list.size());
for (String s : list) {
    int index = s.indexOf('-');
    // Add what we have before the separator in list1
    list1.add(s.substring(0, index));
    // Add what we have after the separator in list2
    list2.add(s.substring(index + 1));
}
System.out.printf("List 1 = %s, List 2 = %s%n", list1, list2);

輸出:

List 1 = [13, 14, 15], List 2 = [ITEM, ITEM, ITEMGROUP]

拆分每個條目,然后將零件添加到不同的列表中。 如果文本中含有較多的- S,然后使用字符串。

ArrayList<String> input = ...
List<String> output1 = new ArrayList<>(input.size());
List<String> output2 = new ArrayList<>(input.size());

for(String item:input){
  String[] splitted = item.split("-");
  output1.add(splitted[0]);
  output2.add(splitted[1]);
}

您可以使用以下代碼

List<String> list = Arrays.asList("13-ITEM", "14-ITEM", "15-ITEMGROUP");
list.stream().map(p -> p.substring(0, p.indexOf('-'))).forEach(System.out::println);
list.stream().map(p -> p.substring(p.indexOf('-') + 1)).forEach(System.out::println);

如果您像這樣拆分您的關注點(每個列表都是使用不同的邏輯創建的),則可以進一步封裝代碼。 例如,您可以添加一些異常處理。

private static Function<String, String> getFunction() {
    return new Function<String, String>() {
        @Override
        public String apply(String p) {
            return p.substring(0, p.indexOf('-'));
        }
    };
}

暫無
暫無

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

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