簡體   English   中英

如何將整數字符串和列表轉換為arrayList

[英]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 ,即。 EInteger ArrayList也不ArrayList保存ArrayList<Integer>

為了滿足您的要求,您將需要定義一個類型,它可以同時作為單一行為Integer或集合Integers 這通常使用Composite Pattern實現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM