java數組arraylist
1. java ArrayList數組中如何插入一個元素
java ArrayList數組使用add來插入一個元素,實例如下:
importjava.util.ArrayList;
publicclassTest{
publicstaticvoidmain(String[]args){
ArrayListlist=newArrayList();
list.add(0);//插入第一個元素
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println(list);//列印list數組
list.add(2,7);
System.out.println(list);
}
}
運行結果如下:
2. 在Java中怎樣把數組轉換為ArrayList
方法一:
ArrayListlist=newArrayList(Arrays.asList(array));
方法二:
publicListgetList(Object[]obj)throwsException{
Listlist=newArrayList();
for(inti=0;i<obj.length;i++)
list.add(obj[i]);
returnlist;
}
3. Java中List和ArrayList的區別
java中List和ArrayList的區別如下:
List是介面,List特性就是有序,會確保以一定的順序保存元素.
ArrayList是它的實現類,是一個用數組實現的List。
使用方法:
比如:List list = new ArrayList();
這樣做的原因是list就相當於是一個泛型的實現,如果想改變list的類型,只需要:
List list = new LinkedList();//LinkedList也是List的實現類,也是ArrayList的兄弟類
4. JAVA中ArrayList
ArrayList是Java中的動態數組容器。ArrayList在Java SE 1.5之前是原始類型,而之後則是泛型類。
ArrayList list = new ArrayList(); //這是Java SE 1.5之前沒有引入泛型時的寫法
ArrayList<Employee> list = new ArrayList<Employee>(); //這是Java SE 1.5及以後的泛型類寫法,<>中代表具體類型
5. java中ArrayList和LinkedList有什麼區別,分別怎麼使用呢
ArrayList和LinkedList都實現了List介面,ArrayList的實現用的是數組,LinkedList是基於鏈表,ArrayList適合查找,LinkedList適合增刪。
ArrayList與LinkList兩者的區別:
ArrayList是基於索引的數據介面,它的底層是數組。它可以以O(1)時間復雜度對元素進行隨機訪問。
相對於ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數組那樣重新計算大小或者是更新索引。
LinkedList比ArrayList更占內存,因為LinkedList為每一個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。
但是要刪除數據卻是開銷很大的,因為這需要重排數組中的所有數據。
2) 相對於 ArrayList , LinkedList 插入是更快的。因為 LinkedList 不像 ArrayList 一樣,不需要改變數組的大小,也不需要在數組裝滿的時候要將所有的數據重新裝入一個新的數組,這是 ArrayList 最壞的一種情況,時間復雜度是 O(n) ,而 LinkedList 中插入或刪除的時間復雜度僅為 O(1) 。 ArrayList 在插入數據時還需要更新索引(除了插入數組的尾部)。
3) 類似於插入數據,刪除數據時, LinkedList 也優於 ArrayList 。
4) LinkedList 需要更多的內存,因為 ArrayList 的每個索引的位置是實際的數據,而 LinkedList 中的每個節點中存儲的是實際的數據和前後節點的位置 ( 一個 LinkedList 實例存儲了兩個值: Node<E> first 和 Node<E> last 分別表示鏈表的其實節點和尾節點,每個 Node 實例存儲了三個值: E item,Node next,Node pre) 。
什麼場景下更適宜使用 LinkedList,而不用ArrayList
1) 你的應用不會隨機訪問數據 。因為如果你需要LinkedList中的第n個元素的時候,你需要從第一個元素順序數到第n個數據,然後讀取數據。
2) 你的應用更多的插入和刪除元素,更少的讀取數據 。因為插入和刪除元素不涉及重排數據,所以它要比ArrayList要快。
6. 什麼是java中的arraylist
System.Collections.ArrayList類是一個特殊的數組。通過添加和刪除元素,就可以動態改變數組的長度。
一.優點
1。支持自動改變大小的功能
2。可以靈活的插入元素
3。可以靈活的刪除元素
二.局限性
跟一般的數組比起來,速度上差些
三.添加元素
1.publicvirtualintAdd(objectvalue);
將對象添加到ArrayList的結尾處
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
內容為abcde
2.publicvirtualvoidInsert(intindex,objectvalue);
將元素插入ArrayList的指定索引處
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
aList.Insert(0,"aa");
結果為aaabcde
3.publicvirtualvoidInsertRange(intindex,ICollectionc);
將集合中的某個元素插入ArrayList的指定索引處
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
ArrayListlist2=newArrayList();
list2.Add("tt");
list2.Add("ttt");
aList.InsertRange(2,list2);
結果為abtttttcde
四.刪除
a)publicvirtualvoidRemove(objectobj);
從ArrayList中移除特定對象的第一個匹配項,注意是第一個
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
aList.Remove("a");
結果為bcde
2.publicvirtualvoidRemoveAt(intindex);
移除ArrayList的指定索引處的元素
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
aList.RemoveAt(0);
結果為bcde
3.publicvirtualvoidRemoveRange(intindex,intcount);
從ArrayList中移除一定范圍的元素。Index表示索引,count表示從索引處開始的數目
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
aList.RemoveRange(1,3);
結果為ae
4.publicvirtualvoidClear();
從ArrayList中移除所有元素。
五.排序
a)publicvirtualvoidSort();
對ArrayList或它的一部分中的元素進行排序。
ArrayListaList=newArrayList();
aList.Add("e");
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
DropDownList1.DataSource=aList;//DropDownListDropDownList1;
DropDownList1.DataBind();
結果為eabcd
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
aList.Sort();//排序
DropDownList1.DataSource=aList;//DropDownListDropDownList1;
DropDownList1.DataBind();
結果為abcde
b)publicvirtualvoidReverse();
將ArrayList或它的一部分中元素的順序反轉。
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
aList.Reverse();//反轉
DropDownList1.DataSource=aList;//DropDownListDropDownList1;
DropDownList1.DataBind();
結果為edcba
六.查找
a)publicvirtualintIndexOf(object);
b)publicvirtualintIndexOf(object,int);
c)publicvirtualintIndexOf(object,int,int);
返回ArrayList或它的一部分中某個值的第一個匹配項的從零開始的索引。沒找到返回-1。
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");
intnIndex=aList.IndexOf(「a」);//1
nIndex=aList.IndexOf(「p」);//沒找到,-1
d)publicvirtualintLastIndexOf(object);
e)publicvirtualintLastIndexOf(object,int);
f)publicvirtualintLastIndexOf(object,int,int);
返回ArrayList或它的一部分中某個值的最後一個匹配項的從零開始的索引。
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("a");//同0
aList.Add("d");
aList.Add("e");
intnIndex=aList.LastIndexOf("a");//值為2而不是0
g)publicvirtualboolContains(objectitem);
確定某個元素是否在ArrayList中。包含返回true,否則返回false
七.其他
1.publicvirtualintCapacity{get;set;}
獲取或設置ArrayList可包含的元素數。
2.publicvirtualintCount{get;}
獲取ArrayList中實際包含的元素數。
Capacity是ArrayList可以存儲的元素數。Count是ArrayList中實際包含的元素數。Capacity總是大於或等於Count。如果在添加元素時,Count超過Capacity,則該列表的容量會通過自動重新分配內部數組加倍。
如果Capacity的值顯式設置,則內部數組也需要重新分配以容納指定的容量。如果Capacity被顯式設置為0,則公共語言運行庫將其設置為默認容量。默認容量為16。
在調用Clear後,Count為0,而此時Capacity切是默認容量16,而不是0
3.publicvirtualvoidTrimToSize();
將容量設置為ArrayList中元素的實際數量。
如果不向列表中添加新元素,則此方法可用於最小化列表的內存系統開銷。
若要完全清除列表中的所有元素,請在調用TrimToSize之前調用Clear方法。截去空ArrayList會將ArrayList的容量設置為默認容量,而不是零。
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("c");
aList.Add("d");
aList.Add("e");//Count=5,Capacity=16,
aList.TrimToSize();//Count=Capacity=5;
7. java中Arraylist是干什麼的怎麼用
java中的ArrayList就是傳說中的動態數組,用MSDN中的說法,就是Array的復雜版本。
它提供了如下一些好處:動態的增加和減少元素實現了ICollection和IList介面靈活的設置數組的大小 。
ArrayList 的用法:
ArrayList List = new ArrayList(); for( int
i=0;i<10;i++ ) //
給數組增加10個Int元素 List.Add(i); //..
程序做一些處理
List.RemoveAt(5);//
將第6個元素移除 for( int i=0;i<3;i++ ) //
再增加3個元素
List.Add(i+20); Int32[] values =
(Int32[])List.ToArray(typeof(Int32));//
返回ArrayList包含的數組 。
(7)java數組arraylist擴展閱讀:
Arraylist的定義:
List 介面的大小可變數組的實現,位於API文檔的java.util.ArrayList<E>。
實現了所有可選列表操作,並允許包括 null 在內的所有元素。
除了實現 List 介面外,此類還提供一些方法來操作內部用來存儲列表的數組的大小。(此類大致上等同於 Vector 類,除了此類是不同步的。)
size、isEmpty、get、set、iterator 和 listIterator 操作都以固定時間運行。
add 操作以分攤的固定時間 運行,也就是說,添加 n 個元素需要 O(n) 時間。
其他所有操作都以線性時間運行(大體上講)。
與用於 LinkedList 實現的常數因子相比,此實現的常數因子較低。
每個 ArrayList 實例都有一個容量。該容量是指用來存儲列表元素的數組的大小。
它總是至少等於列表的大小。隨著向 ArrayList 中不斷添加元素,其容量也自動增長。
並未指定增長策略的細節,因為這不只是添加元素會帶來分攤固定時間開銷那樣簡單
在添加大量元素前,應用程序可以使用
ensureCapacity 操作來增加 ArrayList
實例的容量。這可以減少遞增式再分配的數量。
注意,此實現不是同步的。如果多個線程同時訪問一個 ArrayList
實例,而其中至少一個線程從結構上修改了列表,那麼它必須 保持外部同步。
(結構上的修改是指任何添加或刪除一個或多個元素的操作,或者顯式調整底層數組的大小;僅僅設置元素的值不是結構上的修改。)
這一般通過對自然封裝該列表的對象進行同步操作來完成。
如果不存在這樣的對象,則應該使用 Collections.synchronizedList 方法將該列表「包裝」起來。這最好在創建時完成,以防止意外對列表進行不同步的訪問:
List list = Collections.synchronizedList(new ArrayList(...));
此類的 iterator 和 listIterator 方法返回的迭代器是快速失敗的。
在創建迭代器之後,除非通過迭代器自身的
remove 方法從結構上對列表進行修改,否則在任何時間以任何方式對列表進行修改,迭代器都會拋出
。
因此,面對並發的修改,迭代器很快就會完全失敗,而不是冒著在將來某個不確定時間發生任意不確定行為的風險。
注意,迭代器的快速失敗行為無法得到保證。
因為一般來說,不可能對是否出現不同步並發修改做出任何硬性保證。快速失敗迭代器會盡最大努力拋出
。
因此,為提高這類迭代器的正確性而編寫一個依賴於此異常的程序是錯誤的做法:迭代器的快速失敗行為應該僅用於檢測
bug。
8. java arraylist 可以是數組嗎
ArrayList是一個List,但是裡面可以存放數組和任意類型的東西,例如
ArrayList list = new ArrayList();
int arr[] = new int[4];
list.add(arr);
String str = "123";
list.add(str);
int index = 23;
list.add(index);
9. Java ArrayList數組
ArrayList是List的子類,它與數組最顯著的區別:
List可以自動擴容,數組在初始化時應指定大小
List中存儲的是對象,可以是任意類型,而數組中存儲的是同種類型數據
實際開發中,List比較常用,因為List提供了很多方法對其添加、刪除、排序。。等功能
向裡面添加數組內容。你意思是不是 將一個數組轉換成一個List集合
Arrays有一個asList()方法,把數組轉換為一個List集合
String arr[] = new String[]{"a","b","c"};
List list = Arrays.asList(arr);
需要注意的是,該方法返回的list的固定長度的,所以不能對其進行添加,刪除操作