建议使用LinkedList将对象发送到服务器?

时间:2014-09-06 15:06:20

标签: java linked-list client-server

使用链表的情况:

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);
            }

        }

我看过很多使用链表的源代码,但我不明白为什么。 是一回事吗?如果没有,有什么区别? 感谢

1 个答案:

答案 0 :(得分:1)

Person和LinkedList之间的区别在于Person只有一个人,LinkedList是一个有序的人员列表,不止一个人。

如果不是非常特殊的情况,你不应该使用LinkedList,通常使用List就足够了,因为你声明了方法工作所需的接口,而不是特定的实现。

一旦你有一个带List的方法,无论你传递LinkedList或ArrayList还是另一个符合List语义的实现,都应该在功能上等同,并且“only”提供更好的性能,无论是插入,还是检索,还是内存消耗。

但是,如果您在列表上执行计算密集型操作,例如循环很多,添加或删除大量条目等,这些性能优势非常有用。

当用于服务器调用时,我认为序列化LinkedList或其他实现(使用java序列化或任何其他序列化,如json等)的性能是最小的。