【问题标题】:Convert String to ArrayList<String> in Java在 Java 中将字符串转换为 ArrayList<String>
【发布时间】:2021-07-12 13:42:50
【问题描述】:

我有一个 String"PAA...P.....P..XX.B..Q.OBCCQ.ORRRQ.O" 有 36 个字符,我想将它们按 6 个元素分配到 ArrayList 中,但我不知道该怎么做。

我希望 ArrayList 内部看起来像,

[["PAA..."],["P....."],["P..XX."],["B..Q.O"],["BCCQ.O"],["RRRQ.O"]]

每个索引都有一个由 6 分割的字符串。

谢谢!

【问题讨论】:

  • 您的分发标准是什么?
  • 使用String.substring(...)方法遍历String,创建6个字符串。

标签: java string arraylist


【解决方案1】:

如果您只想要长度为groupSize 的字符串列表。这适用于任何 groupSize。如果长度不是 groupSize 的倍数,则最后一个字符串将是余数。

我花时间提供了两个选项,因为您的描述似乎与所需的输出不匹配。

第一个,list1,是一个列表列表,其中每个列表包含一个 6 个字符的字符串。 List2 是 6 个字符串的单个列表。

List<List<String>> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
int len = str.length();
int groupSize = 6;
for (int i = 0; i < len; i += groupSize) {
    // option 1
    list1.add(new ArrayList<>(List.of(str.substring(i, (len - i) > groupSize ?
                    i + groupSize : len))));
    // option 2
    list2.add(str.substring(i, (len - i) > groupSize ?
            i + groupSize : len));
}

System.out.println("list1 = " + list1);
System.out.println("list2 = " + list2);

打印

list1 = [[PAA...], [P.....], [P..XX.], [B..Q.O], [BCCQ.O], [RRRQ.O]]
list2 = [PAA..., P....., P..XX., B..Q.O, BCCQ.O, RRRQ.O]


【讨论】:

    【解决方案2】:

    你可以这样做:

    String s = "PAA...P.....P..XX.B..Q.OBCCQ.ORRRQ.O";
    List<List<String>> result = Arrays.stream(s.split("(?<=\\G.{6})"))
        .map(Arrays::asList).collect(Collectors.toList());
    System.out.println(result);
    

    输出:

    [[PAA...], [P.....], [P..XX.], [B..Q.O], [BCCQ.O], [RRRQ.O]]
    

    regex101 正则表达式的解释:

    【讨论】:

    • 感谢您的回答。但我很抱歉,我写错了我的问题,我现在改正了。我希望每个索引都有一个由 6 分割的字符串。再次抱歉。
    【解决方案3】:
    String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            ArrayList outer = new ArrayList(); // answer
            ArrayList inner = new ArrayList();
            int groupOf = 6;
            for (int i=0; i< str.length(); i ++){
                inner.add(str.substring(i,i+1));
                if (inner.size() == groupOf){
                    outer.add(inner);
                    System.out.println(outer);
                    inner.clear();
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2014-05-16
      • 2013-11-19
      • 2021-07-25
      • 2013-02-26
      相关资源
      最近更新 更多