Я постараюсь сделать это простым, но все же понятным. Если есть путаница, дайте мне знать!
Я получил эту хеш-таблицу:
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**
}
Спасибо!
РЕДАКТИРОВАТЬ: Кстати, ребята, метод connect получил несколько проверок, но он довольно длинный, поэтому я не стал его вставлять, так как я знаю, что он отлично работает.
РЕДАКТИРОВАТЬ: Так как, кажется, с помощью return allChannels.get (канал), похоже, все правильно, с моим 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);
}