使用链表的情况:
private void send(Socket clientSocket, LinkedList<Person> person) {
try {
ObjectOutputStream output;
output = new ObjectOutputStream(clientSocket.getOutputStream());
output.writeObject(person);
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
没有链表的案例:
private void send(Socket clientSocket, Person person) {
try {
ObjectOutputStream output;
output = new ObjectOutputStream(clientSocket.getOutputStream());
output.writeObject(person);
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
我看过很多使用链表的源代码,但我不明白为什么。 是一回事吗?如果没有,有什么区别? 感谢
答案 0 :(得分:1)
Person和LinkedList之间的区别在于Person只有一个人,LinkedList是一个有序的人员列表,不止一个人。
如果不是非常特殊的情况,你不应该使用LinkedList,通常使用List就足够了,因为你声明了方法工作所需的接口,而不是特定的实现。
一旦你有一个带List的方法,无论你传递LinkedList或ArrayList还是另一个符合List语义的实现,都应该在功能上等同,并且“only”提供更好的性能,无论是插入,还是检索,还是内存消耗。
但是,如果您在列表上执行计算密集型操作,例如循环很多,添加或删除大量条目等,这些性能优势非常有用。
当用于服务器调用时,我认为序列化LinkedList或其他实现(使用java序列化或任何其他序列化,如json等)的性能是最小的。