删除重复项(两个值) - 数组列表中的重复值

2022-09-02 23:02:21

我有一个以下字符串;ArrayList

 List<String> e = new ArrayList<String>();
 e.add("123");
 e.add("122");
 e.add("125");
 e.add("123");

我想检查列表中是否有重复项,并从列表中删除它们。在本例中,我的列表将只有两个值,在此示例中,它将是值 122 和 125,而这两个 123 将消失。

最好的方法是什么?我正在考虑使用 ,但这只会删除其中一个重复项。Set


答案 1

在Java 8中,你可以做到:

e.removeIf(s -> Collections.frequency(e, s) > 1);

如果!Java 8 你可以创建一个 .如果 String 已出现在映射中,请将其递增 1,否则将其添加到映射中。HashMap<String, Integer>

例如:

put("123", 1);

现在让我们假设你又有“123”,你应该获取密钥的计数并添加一个:

put("123", get("aaa") + 1);

现在,您可以轻松地在地图上进行迭代,并创建一个新的数组列表,其中包含其值< 2 的键。

引用:


答案 2

您也可以在 Java 8 中使用filter

e.stream().filter(s -> Collections.frequency(e, s) == 1).collect(Collectors.toList())

推荐