【问题标题】:How to split multiple interger value into array of index如何将多个整数值拆分为索引数组
【发布时间】:2018-09-05 12:48:04
【问题描述】:

我在ArrayList 中有一些Integers

ArrayList<Integer> al = new AraayList<Integer>();
al.add(100);
al.add(211);

现在我想将ArrayList 中的值拆分为一个数组。假设100ArrayList中的第一个值,那么对应的数组应该包含100

【问题讨论】:

标签: java list arraylist split


【解决方案1】:

如果你使用的是 Java 8+,你可以通过这个技巧使用流:

List<Integer> result = al.stream()
        .map(String::valueOf) 
        .flatMap(s -> Arrays.stream(s.split("")))
        .map(Integer::valueOf) 
        .collect(Collectors.toList());

详情

  • .map(String::valueOf) 这会将您的整数转换为字符串 eg. 100 =&gt; "100"
  • .flatMap(s -&gt; Arrays.stream(s.split(""))) 这将通过与"" 的拆分创建一个流,例如。 "100" =&gt; ["1", "0", "0"]
  • .map(Integer::valueOf) 这会将每个字符串解析为整数,例如。 ["1", "0", "0"] =&gt; [1, 0, 0]
  • .collect(Collectors.toList()); 这会将所有结果收集到一个列表中,例如。 [1, 0, 0, 2, 1, 1]

【讨论】:

  • 不错的答案,虽然它显示了 .stream() 的一个真正问题 ...使用 // 内联 cmets ...一切都变得非常不可读 ;-)
  • 我同意@GhostCat 我现在修复它;)
【解决方案2】:

从 Java 8 开始,您可以在 for 循环或 foreach 中运行每个元素。然后在循环中,您可以使用

将其转换为字符串
yourNumberAsString = String.valueOf(yourNumberInArray);

yourNumberAsString.charAt(0); 

你得到第一个数字的位置,如果是 100,它就是 1。如果你在另一个 for 循环中动态地这样做,你的工作就完成了。

【讨论】:

    【解决方案3】:

    您可以遍历数组,将Integer转换成String,然后使用Split方法得到String数组:

    for(int i=0; i < al.size(); i++)
    {
       String [] array = al[i].toString().split("");
       // do whatever you need with the array
    }
    

    【讨论】:

    • 感谢分享此信息。下面是我将在我的项目中使用的代码。 ArrayList al= 新的 ArrayList(); al.add(100); al.add(200); for(int i=0; i
    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 2021-05-25
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2016-11-16
    • 2021-03-22
    相关资源
    最近更新 更多