仅从重复列表中删除一个元素

时间:2018-06-13 20:04:24

标签: java list collections

我有一个包含相同元素的简单列表:

private List<String> boxes = new ArrayList<>();
    boxes.add("100");
    boxes.add("20");
    boxes.add("20");
    boxes.add("5");
    boxes.add("5");
    boxes.add("5");
    boxes.add("5");
    boxes.add("5");
    boxes.add("Extra life");
    boxes.add("Game over");
    boxes.add("Game over");
    boxes.add("Game over");

我想删除&#34;游戏结束&#34;此列表中的值,但只有一个,而不是全部三个。我该怎么做?我试图在此列表中调用remove方法,但它会删除所有三个元素。

2 个答案:

答案 0 :(得分:2)

您可以使用remove方法的此重载:

boxes.remove("Game over");

答案 1 :(得分:1)

<html>
<head>
 <script>
  window.addEventListener('load', console.log)
 </script>
</head>
<body>
</body>
</html>

关于它的一件事。我担心public static void remove(List<String> boxes, String str) { int index = boxes.indexOf(str); if(index >= 0) boxes.remove(index); } 的具体实施。在某些情况下,List<String>可能需要boxes.remove(index)。因此,认为O(n)的实施可能会更好(但不是关键)。它只给出了一次给定列表。

Iterator

此外,如 @Andreas 所述,public static void remove(List<String> boxes, String str) { Iterator<String> it = boxes.iterator(); while (it.hasNext()) { if (it.next().equals(str)) { it.remove(); break; } } } 仅删除第一个找到的元素。您尝试过的方法似乎正常工作:

List.remove(Object)