2012-07-29 43 views
3

假設我使用單線程應用程序,java.util.LinkedList是否有循環?我在source code中看到Entry是一個私人內部類,因此無法篡改它。只是想知道,在一個鏈接中找到一個循環就是一個很受歡迎的面試問題。沒有人會問如何設計一個列表來避免首先出現循環。或者我在這裏誤解了什麼?java.util.LinkedList可以有Loop嗎?

+0

什麼是列表中的「循環」?我不明白你想問什麼。你的意思是一個循環列表嗎? – davidbuzatto 2012-07-29 06:08:59

+0

在單向鏈表中指向其中一個較早節點的稍後節點中循環。 – 2012-07-29 06:12:05

回答

1

你是對的,因爲j.u.LinkedList不公開api創建lops,它不被支持。也許有些反思暴力可能會發生。

我認爲這個問題來自一代c程序員,他們沒有鏈接列表的標準庫,他們往往會推出自己的。另外,由於C中沒有私有修飾符,所以如果你願意,總是可以在C鏈表中創建一個循環。

+0

是的,那是我的想法。 – 2012-07-29 06:18:34

1

您可以通過提供不暴露特定列表實現的接口來避免鏈接列表中的循環。這就是Java中發生的事情。 java.util.List是一個接口,而java.util.LinkedList只是其中一個實際上不會在主List之外暴露很多的接口。

訪談或計算機科學類主要關注鏈接列表的理論實現,您可以根據自己的喜好鏈接節點。

所以要回答你的問題:不,你不能有一個循環在java.util.LinkedList

0

可能存在各種誤解。爲什麼有人會問採訪問題的原因很多。這類面試問題的設計,看看如何好,你會:

  1. 理解鏈表的概念
  2. 能夠考慮在編程實踐
  3. 失誤討論Java實現的相同

第三點在我看來並不重要,因爲如果您需要了解它是如何實現的,您顯然可以訪問Java代碼。