當前位置:吉日网官网 - 傳統美德 - Java比較了幾種常見的流通方式的優缺點

Java比較了幾種常見的流通方式的優缺點

Set 1 * * *有三種遍歷方法,以列表循環為例:

進口?Java . util . ArrayList;

進口?Java . util . iterator;

進口?Java . util . list;

公共?班級?主要?{

公共?靜電?作廢?main(String[]?args)?{

列表& lt整數& gt?列表?=?新的?ArrayList & lt& gt();

為了什麽?(int?我?=?0;?我?& lt?10;?i++)?{

list . add(I);

}

//用於循環遍歷

為了什麽?(int?我?=?0,?尺寸?=?list . size();?我?& lt?尺寸;?i++)?{

system . out . println(list . get(I));

}

//叠代器叠代器遍歷

叠代器& lt整數& gt?它?=?list . iterator();

什麽時候?(it.hasNext())?{

system . out . println(it . next());

}

//foreach循環

為了什麽?(整數?我?:?列表)?{

system . out . println(I);

}

}

數據元素是如何存儲在內存中的?

有兩種主要的存儲方法:

1,順序存儲,隨機存取(直接存取):

這樣,相鄰的數據元素存儲在相鄰的內存地址中,整個內存地址是連續的。可以根據元素的位置直接計算內存地址,直接讀取。讀取特定位置元素的平均時間復雜度為O(1)。通常,只有基於數組實現的集合才具有此功能。數組列表是用Java表示的。

2、鏈式存儲,順序存取:

這樣,每個數據元素不需要在內存中的相鄰位置,並且每個數據元素包含其下壹個元素的內存地址。不能根據元素的位置直接計算內存地址,只能按順序讀取元素。讀取特定位置的元素的平均時間復雜度是O(n)。主要用鏈表來表示。LinkedList用Java表示。

每種遍歷方法的實現原理是什麽?

1,傳統用於循環遍歷,基於計數器:

walker在集合外維護壹個計數器,然後依次讀取每個位置的元素,讀到最後壹個元素時停止。主要是按照元素的位置來讀元素。

2、叠代器遍歷,叠代器:

壹般來說,每個特定的數據集都需要提供相應的叠代器。與傳統的for循環相比,叠代器禁止了顯式遍歷計數器。所以基於順序存儲集的叠代器可以通過位置直接訪問數據。基於鏈式存儲集的叠代器的正常實現需要保存當前遍歷位置。然後根據當前位置向前或向後移動指針。

3.foreach循環遍歷:

根據反編譯的字節碼,我們可以發現foreach也是以叠代器的方式實現的,但是Java編譯器幫助我們生成了這些代碼。

遍歷模式在哪裏適用?

1,傳統用於循環遍歷,基於計數器:

順序存儲:讀取性能比較高。適用於遍歷順序存儲集。

鏈式存儲:遍歷鏈式存儲集的時間復雜度太大。

2、叠代器遍歷,叠代器:

順序存儲:如果不太在意時間,建議選擇這種方式。畢竟代碼更簡潔,也防止了脫單的問題。

鏈式存儲:意義重大,平均時間復雜度降為O(n),相當吸引人,推薦這種遍歷方式。

3.foreach循環遍歷:

Foreach只是讓代碼更簡潔,但是有壹些缺點,就是不能操作數據集(刪除等。)在遍歷期間,所以在某些場合不使用。而且是基於叠代器本身,但是由於類型轉換的問題,會比直接用叠代器慢壹點,不過還好時間復雜度是壹樣的。那麽如何選擇,參考以上兩種方式,做壹個折中的選擇。

  • 上一篇:出租車行業要結束了嗎?
  • 下一篇:西恩麻辣燙加盟靠譜嗎?
  • copyright 2024吉日网官网