【问题标题】:Java chat room programJava聊天室程序
【发布时间】:2014-03-16 03:52:31
【问题描述】:

我必须在 gui 中显示当前用户,但它一直说 hashset 是空的,这已经困扰了我好几个小时。解决此问题的最简单方法是什么?可能有很多未使用的代码,因为我正在测试试图让它工作的东西。

客户端.java

public class Client {
    Server.names();
}

服务器.java

public class Server {    
    public static HashSet<String> names = new HashSet<String>();

    public static void main(String[] args) throws Exception{                    
        while(true){
            name = in.readLine();
            if(name == null){
                return;
            }
            if(!names.contains(name)){
                 names.add(name);
                 break;
            }            
        }
    }
}

【问题讨论】:

  • 请尽量减少您在此处发布的代码数量。如果问题在于您的 HashSet 为空,您应该向我们展示填充和使用该集合的代码部分。
  • 我尽量简化,感谢您的帮助。
  • 在添加之前检查集合是否包含项目是没有意义的,只需添加它即可。检查元素是否在集合中同样昂贵。而且因为它是一个集合,所以如果它是重复的,它就保证是同一个元素。
  • 我需要在客户端类中读取它,因为我必须将数据传递到 gui。换句话说,我如何在不创建新对象的情况下从不同的类中读取哈希集

标签: java static set hashset


【解决方案1】:

您的 Q 有点不清楚,但是如果您想从您的 Server 类中获取 HashSetnames,您需要通过调用 Server.name 来获取对它的引用,而不是 Server.name()这不是一种方法。

现在names 将是空的,直到您填充它。要填充它,您需要调用将读取用户输入并将其存储在names 中的代码。在这种情况下,您可以调用Servermain 方法(请参阅此相关Q here),但除非您真的希望它成为Servermain 方法,否则我建议将该方法重命名为@ 987654333@ 或类似的。

【讨论】:

  • 当我使用它时,客户端类读取 public static HashSet names = new HashSet() 这是空的,它没有读取我添加的名称
  • @user3238481 请查看更新说明。顺便说一句,大概在您的Server 类中,in 是您已声明并初始化的static Scanner
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 2021-12-02
相关资源
最近更新 更多