我正在制作一个ArrayList需要Strings,并且该类中的一个方法需要a String,在其前面加上"urgent:",并将其放在列表的开头.我现在正在编写一种方法,该方法应该采用a int,a String的位置,并将该字符串"降级"到列表的末尾.
但是,如果字符串前面有"urgent:",那么该方法也应该删除"urgent:"如果它被降级.一切都编译并运行,但它并没有删除"紧急:",我不知道为什么.
public void addUrgetItem(String newItem) {
String urgentItem = newItem;
items.add(0, "urgent: " + urgentItem);
}
public void demote(int position) {
int size = items.size();
String itemAtSpot = items.get(position);
items.remove(itemAtSpot);
items.add((size-1), itemAtSpot);
if (itemAtSpot.startsWith("urgent:")) {
items.remove("urgent:");
}
}
Run Code Online (Sandbox Code Playgroud)
当你这样说:
items.remove("urgent:");
Run Code Online (Sandbox Code Playgroud)
它试图String从列表本身中删除文字"紧急",而不是从列表中的任何特定项目中删除.相反,您需要删除该文本,itemAtSpot然后再将其添加回List.这看起来像这样:
public void demote(int position) {
int size = items.size();
String itemAtSpot = items.get(position);
items.remove(itemAtSpot);
if (itemAtSpot.startsWith("urgent: ")) {
itemAtSpot = itemAtSpot.substring("urgent: ".length());
}
items.add(itemAtSpot);
}
Run Code Online (Sandbox Code Playgroud)
因此,在删除之后String,您将在"紧急:"之后获取所有内容的子字符串,并将其添加回List最后.
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |