[英]how to convert string of integers and Lists to arrayList
我有一種情況,我想將一個字符串轉換為一個ArrayList THAT CONTAINS INTEGERS AND OTHER ARRAYLISTS.
在我的字符串中,我可以將任意數量的單詞添加到ArrayList
對象中:
String s = "[2,5,9,8,1,[5,7],9,8,[9,6,9,8],8,9]";
我做了一些工作:
String testdata = "[25,645,[36,65],65]";
ArrayList<Integer> arrayInt = new ArrayList<>();
try (Scanner readFile = new Scanner(testdata)) {
Pattern digitsPattern = Pattern.compile("(\\d+)");
while (readFile.hasNextLine()) {
Matcher m = digitsPattern.matcher(readFile.nextLine());
while (m.find())
arrayInt.add(Integer.valueOf(m.group(1)));
}
}
結果是:
[25, 645, 36, 65, 65]
我想要的是這樣的: [25,645,[36,65],65]
刪除[
和]
,然后使用Scanner with ,
delimiter(或使用[
, ]
和,
作為Scanner的分隔符 - 這個正則表達式應該可以做到[\\\\[\\\\],]+
)。
另外要避免Integer.parseInt
使用返回int
Scanner#nextInt
。
編輯:
如果您願意接受包含數字作為浮點類型(如double
s)的列表,您可以嘗試使用像gson這樣的JSON序列化/反序列化工具。
String testdata = "[25, 645, [36, 65], 65]";
List fromJson = new Gson().fromJson(testdata, List.class);
System.out.println(fromJson);
輸出: [25.0, 645.0, [36.0, 65.0], 65.0]
。
輸入ArrayList<E>
,即。 你指定它可以容納的單個類型<E>
。 例如,您已指定arrayInt
包含Integers
,即。 E
是Integer
。 此ArrayList
也不ArrayList
保存ArrayList<Integer>
。
為了滿足您的要求,您將需要定義一個類型,它可以同時作為單一行為Integer
或集合Integers
。 這通常使用Composite Pattern實現 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.