繁体   English   中英

将字符串转换为 ArrayList<string> 在 Java</string>

[英]Convert String to ArrayList<String> in Java

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

我希望 ArrayList 的内部看起来像,

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

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

谢谢!

你可以这样做:

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);

Output:

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

regex101正则表达式的解释: 在此处输入图像描述

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

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

第一个 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]


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();
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM