1. 程式人生 > >list的幾種遍歷方式及其效率,ArrayList和LinkedList的結構

list的幾種遍歷方式及其效率,ArrayList和LinkedList的結構

話不多說,上程式碼: 

@Test
	public void testListSeq(){
		List<String> list = new ArrayList<String>();
//		List<String> list = new LinkedList<String>();
		List<String> list1 = new LinkedList<String>();
		int a = 10000;
		int b = 1000;
		int c = 10;
		
//		int res = a*c;
//		int res = c*b;
		int res = a*b;
		int e = 0 ;
		while (e<res){
			e++;
			list.add(e+"");
			list1.add(e+"");
		}	
		//普通遍歷list 需要每次計算list長度 遍歷次數較多時,效率最低;list為linkedList ,遍歷次數較多時,效率極低
		for(int i = 0 ;i < list.size();i++){
			System.out.println(list.get(i));
		}
		//提取list長度,list為arrayList 遍歷次數較多時,效率最高;list為linkedList ,遍歷次數較多時,效率極低
		int n = list.size();
		for(int i = 0 ;i < n;i++){
			System.out.println(list.get(i));
		}
		//for each 遍歷    jdk版本5及以上 遍歷次數較多時,效率較低,只比不提取長度的普通遍歷高。 遍歷次數較少(十萬以內)時,效率較高。
		//;list為linkedList ,遍歷次數較多時,效率極高。
		for(Object s : list){
			System.out.println(s+"");
		}
		//使用迭代器iterator 遍歷次數較多時,效率較高 僅次於提取list長度的普通遍歷;list為linkedList ,遍歷次數較多時,效率極高和foreach基本相同
		Iterator<String> iterator = list.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
		//綜上所述,在使用迴圈時優先考慮iterator和for each 方式。
		
		list.clear();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		list.add("6");
		
		list1.clear();
		list1.add("1");
		list1.add("2");
		list1.add("10");
		list1.add("4");
		list1.add("5");
		list1.add("6");
		
		System.out.println(list.get(2)+"--------------");
		System.out.println(list1.get(2)+"--------------");
		//刪除list中的前五個元素
		for(int i = 0 ;i < 5;i++){
			list.remove(0);
			list1.remove(0);
		}
		//列印最開始的元素,從這可以看出,arrayList是一個佇列結構。先進先出。他存在放入順序。
        //linkedList 在表現上也可以看做是個佇列,實際是個連結串列結構構成的鏈狀結構。如果你需要的只是個佇列,建議用ArrayList
		System.out.println(list.get(0)+"--------------");
		System.out.println(list1.get(0)+"--------------");
	}

相關推薦

list方式及其效率ArrayListLinkedList結構

話不多說,上程式碼:  @Test public void testListSeq(){ List<String> list = new ArrayList<String>(); // List<String> list = ne

Java基礎及提高 之 陣列ListSetMap的方式

一,陣列的遍歷方式 陣列有兩種遍歷方式: public class ArrayXunhuan { public static void main(String[] args) { int[

Map集合List集合的方式

++++++++++++++++++++++List集合遍歷++++++++++++++++++++++++++++++++++++++++++++++publicstaticvoid main(Str

SQL Server中方式比較

不同 .com font size 常用 分享 分享圖片 遊標 inf SQL遍歷解析   在SQL的存儲過程,函數中,經常需要使用遍歷(遍歷table),其中遊標、臨時表等遍歷方法很常用。面對小數據量,這幾種遍歷方法均可行,但是面臨大數據量時,就需要擇優選擇,不同的遍歷方

二叉樹方式之間的轉換

寫在前面 二叉樹的遍歷方式,基本可以歸結為四種:前序遍歷、中序遍歷、後序遍歷、層次遍歷 先序遍歷順序:根,左兒子,右兒子 中序遍歷順序:左兒子,根,右兒子 後序遍歷順序:左兒子,右兒子,根 層次遍歷順序:根據每一層的順序,由左向右依次輸出 遍歷順序及轉換  &n

圖的方式

1.圖的遍歷方式大概也就兩種吧,DFS和BFS。但是有不同的實現方式,上次聽說我在遞迴轉非遞迴演算法中實現了二叉樹的遞迴轉非遞迴,然後有人說那圖的呢?其實圖的DFS轉成非遞迴還要簡單一些。 2.首先是BFS,BFS其實很簡單了。使用佇列來儲存與當前節點相鄰的所有節點,然後用這些節點作為基礎繼續拓

【Java】整理樹的方式總結

http://www.cnblogs.com/developerY/p/3323264.html BFS和DFS詳解以及java實現 http://sunlujing.iteye.com/blog/1876540 http://www.cnblogs.com/dolphin

Map集合例項練習三--HashMap與arrayList方式重點!請一定要掌握熟練

    本章節是基於例項練習一與練習二的練習例項: 以下是string的常用判斷,在實際開發中,經常使用到。 1 isNotEmpty(str)等價於 str != null && str.length > 0 2 isNotBlank(str) 等

JS方式比較

數組 不能 left fff 支持 clas ffffff padding for in 幾種遍歷方式比較 for of 循環不僅支持數組、大多數偽數組對象,也支持字符串遍歷,此外還支持 Map 和 Set 對象遍歷。 for in 循環可以遍歷字符串、

二叉樹的方式

package com.sys.binarytreetest.binary; import java.security.Principal; import java.util.ArrayList; import java.util.HashMap; import java.

樹的方式(遞迴/非遞迴)

樹的幾種遍歷方式,前序遍歷,中序遍歷,後序遍歷,包括它的遞迴實現以及非遞迴實現 #include<stdio.h> #include<stdlib.h> typedef struct tree { int data;

Map集合的方式

 import java.util.HashMap;  2 import java.util.Iterator;  3 import java.util.Map;  4   5 public class TestMap {  6     public static void

std::vector的方式比較

std::vector是我在標準庫中實用最頻繁的容器。總結一下在遍歷和建立vector時需要注意的一些地方。         在不考慮執行緒安全問題的前提下,在C++11中有五種遍歷方式。 方式一 for (size_t i =0; i < vec.size(); i

jquery常用的方式

1、找class為  otherIdentifier 下 class為form-control 的input   如果input 值為空 則 disable $(document).ready(function(){  $(".otherIdentifier").find(

Java中List集合的(三方式效率的比較)

public static void main(String args[]){ compare(); } public static void compare() { List<String> list = new ArrayList

Map的取值方式

今天心情不好,上午花了一點時間來寫Demo,到網上逛了逛,也算整理了一下基礎知識,未來的路還有很長,這樣的Demo也會有很多。 import org.junit.Test; import java.util.*; public class test { @Test publ

java的list實現方式效率ArrayListLinkedList、Vector、Stack)以及 java時間戳的三獲取方式比較

一、list簡介 List列表類,順序儲存任何物件(順序不變),可重複。 List是繼承於Collection的介面,不能例項化。例項化可以用: ArrayList(實現動態陣列),查詢快(隨

使用泛型後的List集合型別的三方式

我們常用的集合型別有三種基本型別:List,Set和Map型別,其中運用泛型過後的這三種類型當中,List有三種遍歷方式,Set和Map有兩種遍歷方式,而List這三種方式當中包含了Set和Map的另外兩種遍歷方式,因此我們以List為例. 遍歷泛型List集合的三種方法包

List的三方式

package test1;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;pub

HashMap 4迴圈方式及其效能對比

主要介紹HashMap的四種迴圈遍歷方式,各種方式的效能測試對比,根據HashMap的原始碼實現分析效能結果,總結結論。 1. Map的四種遍歷方式 下面只是簡單介紹各種遍歷示例(以HashMap為例),各自優劣會在本文後面進行分析給出結論。 (1) for each