首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将ArrayList分解为两个新的ArrayLists?

如何将ArrayList分解为两个新的ArrayLists?
EN

Stack Overflow用户
提问于 2016-10-05 13:51:01
回答 3查看 713关注 0票数 1

我在ArrayList上有这样的数据:13-ITEM,14-ITEM,15-ITEMGROUP (以连字符(-)作为分隔符)。

我想把这个列表分成两个新的ArrayLists

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

我对Java很陌生。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-10-05 13:57:46

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

代码语言:javascript
复制
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);

输出:

代码语言:javascript
复制
List 1 = [13, 14, 15], List 2 = [ITEM, ITEM, ITEMGROUP]
票数 2
EN

Stack Overflow用户

发布于 2016-10-05 13:54:42

拆分每个条目并将部件添加到不同的列表中。如果文本包含更多的-s,则使用子字符串。

代码语言:javascript
复制
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]);
}
票数 0
EN

Stack Overflow用户

发布于 2016-10-05 14:19:08

您可以使用以下代码

代码语言:javascript
复制
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);

如果您像这样拆分您的关注点(每个列表都是使用不同的逻辑创建的),那么您将有可能进一步封装代码。例如,您可以添加一些异常处理。

代码语言:javascript
复制
private static Function<String, String> getFunction() {
    return new Function<String, String>() {
        @Override
        public String apply(String p) {
            return p.substring(0, p.indexOf('-'));
        }
    };
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39875841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档