gpt4 book ai didi

java - 获取 Set 中所有被拒绝的添加

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:39 25 4
gpt4 key购买 nike

我不太擅长哈希集,我想知道我是否能够使用 .addAll 方法检索哈希删除的重复项。所以在我的代码中,它要求用户输入最多 20 的值,如果是 -1,则中断。然后它会删除重复项并显示完成的列表。但现在我想显示已删除重复列表的列表。例如:2 = 3 次重复 5 = 5 次重复。这是我的代码:

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class Question {
public static void main(String[] args) {
ArrayList<Integer> entries = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);
int counter = 0;
int sentinel = -1;
while (entries.size() <= 20) {

System.out.println("Please enter some numbers into the entries list");
entries.add(input.nextInt());
if (entries.get(counter) == sentinel) {
entries.remove(counter);
break;
}
System.out.println("You've added: " + entries.get(counter) + ". So far your list is as shows: " + entries);
counter++;

}

System.out.println("The list is: " + entries);
System.out.println("Checking for Duplicates...");

Set<Integer> num = new LinkedHashSet<>(entries);
num.addAll(entries); // The addAll method deletes duplicates
System.out.println(num);
entries.clear();
entries.addAll(num);

System.out.println("The Finished list is: " + entries);

}

}

最佳答案

不幸的是,Set 不会跟踪它拒绝的所有项目。您将必须手动执行此操作。一种快速而肮脏的方法如下:

Set<Integer> noDuplicates = new LinkedHashSet<Integer>();
List<Integer> rejects = new ArrayList<Integer>();
for(Integer entry : entry) {
if(!noDuplicates.add(entry)) { rejects.add(entry) }
}

请注意,当尝试将重复元素添加到 Set 时,add 方法返回 false 并拒绝添加请求。

关于java - 获取 Set 中所有被拒绝的添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41895219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com