java - 打印出 ArrayList 的每个元素,不重复元素并再次重新打印

标签 java sockets arraylist

我正在尝试编写一段代码,通过套接字将输出发送到另一个客户端。这段代码基本上将输入作为 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/

相关文章:

java - 将轴标题添加到 mpandroidchart

java - 如何确定远程桌面 Swing 应用程序中的字体宽度(以像素为单位)

java - 尝试通过 Hibernate 连接到 Oracle 时出现 java.lang.NoSuchMethodError

java - TLS_RSA_WITH_3DES_EDE_CBC_SHA 是否等同于 SSL_RSA_WITH_3DES_EDE_CBC_SHA

node.js - 页面刷新时不会触发 React 客户端上的 Socket.io 断开连接

java - 初始化列表的构造函数时出现 StackOverFlowError

java - ArrayList 公共(public)构造函数 - "Constructs an empty list with an initial capacity of ten"- 在哪里?

java - Windows 7中的JPA Eclipselink查询解析问题

vb.net - 未捕获错误(AsyncCallback)

Java - 多态性问题