我正在尝试编写一段代码,通过套接字将输出发送到另一个客户端。这段代码基本上将输入作为 ArrayList 并将列表中的每个元素一一发送到客户端,而不重复元素。遍历完所有元素后,它会重新填充列表并再次一一发送元素。我为此尝试了几种不同的代码,但我的元素继续重复。这是我的代码
ArrayList<String> listCopy = new ArrayList<String>();
while(!list.isEmpty()) {
Random random = new Random();
int num = random.nextInt(list.size());
element = list.get(num);
listCopy.add(element);
output.println(element);
for (String copy2 : listCopy) {
if (list.contains(copy2)) {
list.remove(copy2);
}
}
if(list.size()==0) {
for(String copy2 : listCopy) {
list.add(copy2); }
}
}
基本上我的逻辑是,我有一个列表,我从中获取一个随机元素并发送该元素。我确保将此元素添加到副本中,然后在将每个元素添加到副本中后迭代副本并从原始端删除该元素。最后,一旦我的原始列表为零,我就会重新添加元素并再次执行该过程。
最佳答案
因此,每次循环时,您都会根据原始列表中的每个元素检查已处理的每个元素。您所需要的只是一个集合而不是列表。 Set 也是一个集合,但它没有重复项。确实,Set 不会提供 List 那样的随机访问,因此您可能仍希望拥有 List,但要消除重复项,您所需要做的就是将所有值转储到 Set 中,然后转储将值放回到新列表中,您将获得一个具有相同值但没有重复项的新列表。
关于java - 打印出 ArrayList 的每个元素,不重复元素并再次重新打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59924012/