所以我试图创建这个循环,它可以从数组列表中删除给定字符串中的特定字符。问题是当一行中有两个相同的字符时,它会错过第二个,因为当第一个被删除时,第二个被推到数组列表中的一个位置。这是我到目前为止。有人知道怎么修这个东西吗?我仍然是 Java 的初学者,所以任何帮助将不胜感激。
ArrayList<Character> list = new ArrayList();
String string = "BuBBuopB";
for(int i=0;i<string.length();i++)
list.add(string.charAt(i));
System.out.println("BEFORE: " + list);
for(int i=0;i<list.size();i++)
if(list.get(i).equals('B'))
list.remove(i);
System.out.println("AFTER: " + list);
Run Code Online (Sandbox Code Playgroud)
从这个例子打印的是 AFTER: [u, B, u, o, p] 当我希望它是 AFTER: [u, u, o, p]
与其使用int基于for循环的循环来迭代您的集合,不如使用一个Iterator:
Iterator<Character> iter = list.iterator();
while(iter.hasNext()) {
if(iter.next().equals('B')) {
// Remove the last thing returned by next()
iter.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |