【发布时间】:2012-02-17 15:22:21
【问题描述】:
我会尽量保持简单,但仍然可以理解。如果有任何困惑,请告诉我!
我得到了这个哈希表:
private Hashtable<String, ArrayList<String>> allChannels = new Hashtable<String, ArrayList<String>>();
我正在使用这种方法插入客户/用户:
public void connectChannel(String username, String channel) throws RemoteException{
allChannels.put(channel, new ArrayList<String>());
allChannels.get(channel).add(username);
}
现在我想使用此方法,以获取用户连接到给定频道(参数)的数组列表。这怎么可能?
@Override
public ArrayList<String> getUsersInChannel(String channel) throws RemoteException{
return **Code needed**
}
谢谢!
编辑:顺便说一句,connectmethod 进行了多次检查,但它很长,所以我没有费心粘贴它,因为我知道它工作得很好。
编辑:由于使用 return allChannels.get(channel) 似乎是正确的,所以我的 JList 肯定有其他问题。我在 GUILogic 中使用了这些方法来运行 JList。我已经让另外 2 个 JList 以同样的方式工作。
DefaultListModel usersInChanDLM = new DefaultListModel();
public DefaultListModel getUsersInChannelAsDefaultListModel() throws RemoteException{
if(!(getChannel() == null)){
for(String a : cf.getUsersInChannel(getChannel())){
usersInChanDLM.addElement(a);
System.out.println(a);
}
}
return usersInChanDLM;
}
void updateUsersInChannelJlist(JList jList3) throws RemoteException {
usersInChanDLM.clear();
usersInChanDLM.removeAllElements();
for(Client c : cf.getClients()){
if(!(usersInChanDLM.contains(c.findName()))){
usersInChanDLM.addElement(c.findName());
}
}
jList3.setModel(usersInChanDLM);
}
所以,我显然能够看到最后一种方法是搞砸了,因为它将所有客户端添加到列表中。但它应该说什么呢?
解决方案:
所以,我成功了!
public void updateUsersInChannelJlist(JList jList3) throws RemoteException {
usersInChanDLM.clear();
usersInChanDLM.removeAllElements();
for(String s : cf.getUsersInChannel(channel)){
if(!(usersInChanDLM.contains(s))){
usersInChanDLM.addElement(s);
}
}
jList3.setModel(usersInChanDLM);
}
【问题讨论】:
标签: java swing arraylist hashtable