日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java vector arraylist linkedlist用法与区别

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java vector arraylist linkedlist用法与区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,它們是list的實現類,大致說一下vector arraylist linkedlist的區別。


1、線程安全來講,
vector是線程安全,arraylist linkedlist線程不安全。
2、底層實現來講,

vector arraylist是數組,linkedlist是雙向鏈表。

3、效率上講,
vector比arraylist慢。
由于vector和arraylist底層是數組,所以查找起來很快,
而linkedlist是通過指針查找,所以查找起來相對較慢。
而數組的增、刪元素,會引起移動數據,而鏈表則不會。
例如linkedlist刪除某一元素,是將這個元素前后兩個元素連接在一起,然后將移出的元素置空,
而如果是往arraylist中增加一個元素,比如add(3,"aaa")是把原來第3這個元素移到第4位,第4位移到第5位,依此類推,空出一個位置用來放加進去的元素。
由此可見,arraylist在增刪元素時效率會比linkedlist要慢。
linkedlist有頭尾指針,于是它可以addFirst("第一個")和addLast("最后一個"),以及getFirst()和getLast()。
是不是arraylist一定就比linkedlist在增刪數據慢呢?
未必!
如果已經找到位置的情況下,確實linkedlist要快一點。但實際上,很多時候都需要先找位置,然后插入。
如果找得太久,arraylist就占優勢了。
例如,我們往90000這個位置插入一個元素,arraylist很快就能找到這個位置,然后插入,
而linkedlist需要將指針一個個移到這個位置,再插入。
同樣是完成往90000這個位置插入一個元素的任務,誰更快,可想而知。
當然,如果linkedlist一直addFirst或addLast,這樣也可以省去查找的時間。
另外,假如有100000個元素,如果是arraylist,往第一個位置增加一個元素,和住第50000個增加元素,和往第100000個增加元素,效果是有很大區別的。
主要是區別在于,移動數據的多少。

4、vector和arraylist的擴容問題,
由于底層是數組,它們在初始化時,都是有長度的。
arraylist初始化的三種方式:
1)不初始化起容量? ArrayList al = new ArrayList();//默認容量為10
2)初始化容量ArrayList al = new ArrayList(3);//初始容量為3
3)以一個集合或數組初始化ArrayList al = new ArrayList(a);//a為集合或數組
當一個長度為10的arraylist在添加第11個元素時,它會以當前長度的1.5倍在堆內存中重新創建一個數組對象,然后把原數組內的數據復制過來,放棄原數組,指向新數組。
vector是同樣的道理,只不過,它是以2倍的速度擴容,也就是如果原數組長度是10,那么新數組的長度就是20。

?

下面是用法例子:

package wzq.j2se.obj;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

public class ListDemo {

?public static void main(String[] args) {
??System.out.println("-------vector--------");
??Vector v = new Vector(4);
??v.add("Test0");
??v.add("Test1");
??v.add("Test0");
??v.add("Test2");
??v.add("Test2");

??v.remove("Test0"); //刪除指定內容的元素
??v.remove(0); //按照索引號刪除元素

??int size = v.size();
??System.out.println("size:" + size);
??
??for(int i = 0;i < v.size();i++){
??System.out.println(v.get(i));
??}


??System.out.println("-------arraylist--------");

??List list = new ArrayList();
??list.add("test0");
??list.add("test1");
??list.add("test2");
??//list.addAll(v);
??list.add("test3");
??list.remove("test1");
??list.remove(2);//注意這兒,是指重新排序后的元素,也就是test3成了第二個元素:test0,test2,test3
??for(int i=0;i<list.size();i++){
???System.out.println(list.get(i));
??}
??
??System.out.println("---------------");
??/*ArrayList與數組之間的轉換:
?? */
??List list1 = new ArrayList();
??list1.add("1");
??list1.add("2");
??final int size1 = list1.size();
??String[] arr = (String[])list1.toArray(new String[size1]);

??System.out.println("arr=="+arr[0]);
??System.out.println("arr=="+arr[1]);
??
??
??String[] arr2 = new String[] {"4", "5"};
??List list2 = Arrays.asList(arr2);
??for(int i=0;i<list2.size();i++){
???System.out.println(list2.get(i));
??}


??System.out.println("-------linkedlist--------");
??
???? //初使化一個鏈表
???? LinkedList head = new LinkedList();
???? head.add(new String("小狗"));
???? head.add(new String("美國"));
???? head.add(new String("Japanese!"));
???? head.add(2, "小豬");
???? //鏈表會自動用遍歷的方式打印所有內容
???? System.out.println(head);
???? //利用Vector或者是ArrayList等Collection往鏈表中加數據
???? Vector v1 = new Vector();
???? //向Vector中加入東西
???? v1.add("大狗");
???? v1.add("老美");
???? v1.add("JAPAN");
???? v1.add("老豬");
???? //將當前Vector加在當前鏈表的最后
???? head.addAll(v1);
???? System.out.println(head);
???? //將當前Vector加在當前鏈表的指定位置
???? head.addAll(2, v1);
???? System.out.println(head);
???? //打印指定位置的內容
???? System.out.println(head.get(2));
???? head.addFirst("第一個");
???? System.out.println(head);
???? head.addLast("最后一個");
???? System.out.println(head);
???? //刪除第一個
???? head.remove(head.getFirst());
???? System.out.println(head);
???? //再刪除第一個,采用下標的方式,下標是從0開始的
???? head.remove(0);
???? System.out.println(head);
???? head.remove(head.getLast());
???? System.out.println(head);

??
?}
?
?

}

總結

以上是生活随笔為你收集整理的java vector arraylist linkedlist用法与区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91免费.| 野外做受又硬又粗又大视频√ | 激情婷婷小说 | 波多野结衣一二三区 | 男人久久天堂 | 亚洲一区在线电影 | 亚洲视频在线观看网站 | 久久aⅴ国产欧美74aaa | 丝袜国产一区 | 天天草综合| 日韩欧美久久久 | 写真福利片hd在线播放 | 中文字幕视频在线播放 | 精品亚洲一区二区三区四区五区 | 中国久久| 不卡av网| 欧美人人爽 | www.香蕉视频.com | 在线观看免费人成视频 | 蜜桃aaa| 永久免费网站直接看 | 我想看一级黄色片 | 欧美狠狠操| 国产成人免费视频 | 无码少妇一区二区三区芒果 | 91亚洲网站 | 日韩成人av电影 | 久久久噜噜噜www成人 | 国产经典一区二区 | 11孩岁女毛片 | 久久久精品人妻一区二区三区四 | 国产成人无码专区 | 国产精品一区在线 | 麻豆一区二区三区 | 在线观看不卡一区 | 欧美日韩国内 | 国产精品亚洲二区 | 午夜精品福利在线 | 黄网在线免费 | 国产亚洲精品久 | 欧美第一页在线 | 亚洲欧洲精品一区 | 久久av喷吹av高潮av萌白 | 欧美日韩午夜精品 | 国产精品av在线播放 | 国产一区精品在线观看 | 亚洲免费激情视频 | 欧美少妇精品 | 久久精品香蕉视频 | 成年人色片 | 日韩欧美国产一区二区 | 91亚洲精品久久久蜜桃网站 | 午夜久久视频 | 在线观看的毛片 | 天天干夜夜欢 | 秋霞在线一区 | 激情五月色婷婷 | 国产精品夜夜爽 | 日韩欧美国产片 | 亚洲熟悉妇女xxx妇女av | 1024手机在线看片 | 激情内射人妻1区2区3区 | 久久久久久a | 色xxxxx | 中文字幕乱码人妻一区二区三区 | 国产亚洲一区二区三区不卡 | 91久久极品少妇xxxxⅹ软件 | 中文字幕第88页 | 久久国产精品亚洲 | 中文字幕在线欧美 | 日本一区免费看 | 国产视频在线观看一区 | 高清乱码免费看污 | 麻豆视频91 | 国产视频在线观看免费 | 美国一级片网站 | 国产乱码精品一区二区三 | 亚洲国产福利视频 | 国产一区免费视频 | 国产4区| 国产精品久久久一区二区 | 日韩av午夜| 日韩欧美一区二区视频 | 欧洲亚洲视频 | 成人免费看片在线观看 | 冈本视频在线观看 | 小柔的淫辱日记(1~7) | 啪啪啪一区二区 | 人人精品久久 | jjzz日本女人 | 亚洲精品国产一区 | 精品毛片一区二区三区 | 人妻少妇无码精品视频区 | 奇米激情 | 亚洲第一a| 日本福利一区二区三区 | 日本人妖在线 | 韩国电影大尺度在线观看 | 久久久国产精品久久久 |