[英]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.