Java - 从 ArrayList 中删除最后一个已知项

2022-09-01 07:59:56

好的,所以这是我的:ArrayList

private List<ClientThread> clients = new ArrayList<ClientThread>();

这就是我正在尝试做的事情:
我正在尝试从我上面发布的中删除最后一个已知项目。我正在尝试使用下面的代码执行此操作:ArrayList

    } catch(SocketException re) {


                            String hey = clients.get(clients.size());
                            ClientThread.remove(hey);
                            System.out.println(hey + " has logged out.");
                            System.out.println("CONNECTED PLAYERS: " + clients.size());
}

但我得到这个错误:

C:\wamp\www\mystikrpg\Server.java:147: incompatible types
found   : Server.ClientThread
required: java.lang.String
                        String hey = clients.get(clients.size());
                                                ^
C:\wamp\www\mystikrpg\Server.java:148: cannot find symbol
symbol  : method remove(java.lang.String)
location: class Server.ClientThread
                        ClientThread.remove(hey);
                                    ^
2 errors

我做错了什么?它应该从我的中删除最后一个已知项目。ArrayList


答案 1

它应该是:

ClientThread hey = clients.get(clients.size() - 1);
clients.remove(hey);

或者你可以做

clients.remove(clients.size() - 1);

减号是因为 size() 返回元素数,但 ArrayList 的第一个元素的索引是 0 而不是 1。


答案 2

编译器抱怨您正在尝试将对象列表提供给 .将 的类型更改为 或 更改为 。ClientThreadStringheyClientThreadclientsList<String>

此外:列表的有效索引从 0 到 size()-1。

所以你可能想写

   String hey = clients.get(clients.size()-1);

推荐