我有一个包含字符串的简单LinkedList。
LinkedList<String> list = new LinkedList<String>();
list.add("A, B, C, D");
list.add("R");
list.add("A");
list.add("C, D");
因此,我们的LinkedList为: [ "A, B, C, D", "R", "A" ,"C, D" ]
如您所见,"A"
并且"C, D"
已经包含在中"A,B,C,D"
。
删除包含的字符串的最有效方法是什么?
首先,您可以在添加新值之前使用contains()方法(只要您每次都添加单个String,但不是。)。
其次,如果您将更改添加字符串的方式或LinkedList限制,则似乎可以轻松避免此“问题”。
无论如何,这是一个简单的方法,可以满足您的需求:
private void deleteIfContains(LinkedList<String> list, String str) {
Iterator<String> headIterator = list.iterator();
HashMap<Integer, String> newValues = new HashMap<>();
int index = 0;
while (headIterator.hasNext()) {
String headString = headIterator.next();
if (headString.contains(str)) {
headIterator.remove();
//replace method won't handle ','..you will need to use regex for it
newValues.put(index, headString.replace(str, ""));
}
index++;
}
//Avoid ConcurrentModificationException
for (int i : newValues.keySet()) {
list.add(i, newValues.get(i));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句