我已将这些逗号分隔的String存储在ArrayList中。
[<b>SELL 512<\/b> lots of <b>xyz18@112.00<\/b>, <b>BUY 513<\/b> lots of <b>abc@113.00<\/b>]
我想删除所有HTML标签,然后我想将它们存储在不同的数组列表中。
比如说我希望我的输出像这样。
List3: [SELL, BUY]
List4: [512, 513]
List5: [xyz, abc]
List6: [112, 113]
List<String> List1 = new ArrayList<>();
List<String> List2 = new ArrayList<>();
List<List<String>> Tuples = new ArrayList<List<String>>();
List<String> List3 = new ArrayList<>();
List<String> List4 = new ArrayList<>();
List<String> List5 = new ArrayList<>();
List<String> List6 = new ArrayList<>();
for (int i = 0; i < List1.size(); i++) {
String var = List1.get(i).trim();
for (String x : var.split("\\<.*?\\>|\\@|\\,*$|\\.", 7)) {
List2.add(x);
}
Tuples.add(List2);
}
System.out.println(Tuples);
for (int i = 0; i < Tuples.size(); i++) {
List3.add(Tuples.get(i).get(1).split("\\s")[0].replaceAll("SELL","0").replaceAll("BUY","0"));
List4.add(Tuples.get(i).get(1).split("\\s")[1]);
List5.add(Tuples.get(i).get(3));
List6.add(Tuples.get(i).get(4));
}
System.out.println(List3);
System.out.println(List4);
System.out.println(List5);
System.out.println(List6);
}
但这会让我输出类似这样的内容:
List3: [SELL, SELL]
List4: [512, 512]
List5: [xyz, xyz]
List6: [112, 112]
答案 0 :(得分:2)
如果您检查System.out.println(Tuples);
的输出,则会发现问题:
Tuples.add(List2)
不制作List2
的副本。您在List2
中存储了对同一Tuples
的多个引用,并将更多数据附加到同一List2
。因此,您最终得到一个包含所有连接元组的非常长的列表(即List2
),该列表在Tuples
内复制多次。
而不是
Tuples.add(List2);
试试这个:
Tuples.add(new ArrayList<>(List2));
List2.clear();
这会使Tuples
的元素引用不同的列表。