2014-09-06 55 views
0

情況下用鏈表:建議使用LinkedList將對象發送到服務器?

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

Person和LinkedList之間的區別在於Person只有一個人,LinkedList是一個有序的人員列表,它不止一個人。

如果不是在非常特殊的情況下,你不應該使用LinkedList,通常使用List就足夠了,因爲你聲明瞭方法工作所需的接口,而不是特定的實現。

一旦你有一個帶有List的方法,無論是傳遞LinkedList還是ArrayList或者其他符合List語義的實現,都應該在功能上等同,並且「僅」在插入,檢索或內存上提供更好的性能消費。

但是,如果你在名單上做得很計算密集型操作,如循環很多,添加或刪除條目很多等..

當一個服務器的呼叫使用了這些性能優勢是有用的,我想想序列化LinkedList或其他實現(不管是使用java序列化還是任何其他序列化,比如json等)的性能都是最小的。

+0

編輯以反映OP編輯。 – 2014-09-06 15:12:47

+0

感謝您的回覆。我知道列表和對象之間的區別。我只想知道發送列表(數組列表或鏈接列表)或單個對象是否存在差異。所以,這只是表現最好的問題。再次感謝 – alezz 2014-09-06 15:17:07

+0

發送一個列表可以在一次調用中向您發送更多Person實例,這就是區別。顯然,如果你總是發送只有一個元素的列表,那麼你可以重新考慮使用列表。 – 2014-09-06 15:19:47

相關問題