Java動態(tài)數(shù)組是一種可以任意伸縮數(shù)組長度的對象,在Java中比較常用的是ArrayListE,其中E是表示泛形,即這個列表只能存放E的實例,如:ArrayList String list = new ArrayListString();那這個list只能存放String。
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為樟樹等服務建站,樟樹等地企業(yè),進行企業(yè)商務咨詢服務。為樟樹企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
一般情況,數(shù)組定義后就不能改變大小。但很多場景又需要可以改變大小的數(shù)組。
他雖然是動態(tài)數(shù)據(jù),在底層其實還是數(shù)組,只不過在數(shù)組快要存放滿的時候,自動創(chuàng)建一個更大的數(shù)組。
Java動態(tài)數(shù)組是一種可以任意伸縮數(shù)組長度的對象,在Java中比較常用的是ArrayList,ArrayList是javaAPI中自帶的java.util.ArrayList。下面介紹一下ArrayList作為Java動態(tài)數(shù)組的創(chuàng)建以及用法。
Java動態(tài)數(shù)組是一種可以任意伸縮數(shù)組長度的對象,在Java中比較常用的是ArrayList,ArrayList是javaAPI中自帶的java.util.ArrayList。下面介紹一下ArrayList作為Java動態(tài)數(shù)組的用法。
1.語法:add()是添加一個新的元素,
remove()刪除一個元素,
size()獲得ArrayList的長度。
ArrayList的下標是從0開始。
2.示例代碼
import java.util.ArrayList;
public class JavaArrayList {
public static void main(String[]args)
{
//Java動態(tài)數(shù)組的初始化
ArrayList al=new
ArrayList();
//向Java動態(tài)數(shù)組中添加數(shù)據(jù)
al.add("a");
al.add("b");
al.add("c");
//輸出Java動態(tài)數(shù)組
for(int i=0;ial.size();i++)
{
String
alEach=(String)al.get(i);
System.out.println(alEach);
}
//刪除數(shù)組中的某個元素,刪除第二個元素
al.remove(1);
//修改Java動態(tài)數(shù)組,把新的元素放到第二個位置
al.add(1,"2");
//輸出Java動態(tài)數(shù)組
for(int i=0;ial.size();i++)
{
String
alEach=(String)al.get(i);
System.out.println(alEach);
}
}
}
輸出如下:
a
b
c
a
2
c
PS:java的一維動態(tài)數(shù)組一般是使用集合的:ArrayList,HashMap等
泛型:
ArrayListT a = new ArrayListT();
T是你數(shù)組里 存的類型
比如String類型的 比如int的
package edu.xmut.t1207;
import java.util.ArrayList;
import java.util.Scanner;
public class Test1209
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
ArrayListInteger al = new ArrayListInteger();
System.out.println("請輸入動態(tài)數(shù)組的數(shù)字個數(shù):");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println("請輸入動態(tài)數(shù)組的數(shù)字的最大值:");
int z = sc.nextInt();
for(int i = 0 ; i n ; i++)
{
al.add((int) (Math.random()*z));
}
System.out.println(al);
}
}
OK ,JDK是1.6肯定可以運行,如果是1.5的話,好像沒有基本數(shù)據(jù)類型的裝箱拆箱就是了,不需要注釋吧
我以為你的不確定是根據(jù)情況改變的,所以讓你自己輸入個數(shù)了,你說具體點,你的意思是輸入的個數(shù)也用隨機產(chǎn)生 ?
動態(tài)數(shù)組用ArrayList 它的底層就是動態(tài)數(shù)組
ArrayList
ArrayList 集合的存取方式和數(shù)組操作很類似,可以按照index順序來存取集合中的元素,但是還是建議采用更通用的迭代器來進行ArrayList的遍歷。
ArrayList與數(shù)組最大的區(qū)別就是它是可變數(shù)組,在初始化ArrayList集合的時候,可以指定一個初始化容量(Capacity 集合中可容納元素的數(shù)量),不指定的時候,系統(tǒng)會指定一個默認的容量值。當我們向ArrayList集合添加元素的時候,實際上是存放元素數(shù)量(size)在不斷的增加,當容量不變,當數(shù)量增長到初始容量大小的時候,因為沒有空間導致元素添加阻塞,這時候該集合的容量會按照一定增長策略自動增長,容量增長后,可以繼續(xù)向集合中添加元素??勺償?shù)組是ArrayList的優(yōu)點,但從另外一個角度考慮,容量的增長是需要付出額外的代價的,所以在性能上有所損失。性能問題的一種解決思路是我們可以在向集合添加大量元素之前,根據(jù)欲添加元素的數(shù)量,預先擴充容量,采用的是ensureCapacity方法。
ArrayList是一種線性表,在內(nèi)存中是連續(xù)存儲的,適合于元素的隨機存取。添加和刪除操作是需要依據(jù)添加的位置來定,如果在ArrayList最后元素后面添加和刪除元素,在性能方面還算好,但是如果是在ArrayList中間添加和刪除元素的話,代價就會很大。因為,ArrayList需要維護整個集合元素的順序存儲,所以需要處理欲添加和刪除元素位置之后的所有元素。
ArrayList的實現(xiàn)不是線程安全的。也就是說,如果有多個線程同時操作ArrayList集合對象,而且其中至少有一個線程的操作涉及到集合對象中元素的修改(添加和刪除),則該線程內(nèi)對集合對象操作的方法需要實現(xiàn)同步。這也是ArrayList與Vector的主要區(qū)別。在新的集合框架的實現(xiàn)上,基于性能的考慮,大部分的集合設計都是線程不安全的。如果有同步需求,在用戶自己的實現(xiàn)中可以實現(xiàn)同步,實現(xiàn)的方法有2種:
1、在操作集合對象的方法上使用synchronized關鍵字。
2、如果方法不可修改,則可在定義集合的時候,定義同步化的集合對象(采用Collections工具類的方法),類似:
List list = Collection.synchronizedList(new ArrayList(.....));
(此處深入說明下,在采用Iterator遍歷集合的時候,如果有其他線程修改了集合(添加或刪除操作),那么Iterator的處理會中止并拋出ConcurrentModificationException異常,這是集合處理中的Fail-safe特性)
ArrayList提供的方法中,除了Collection和List的公用方法外,又加入了一些新的方法。
ArrayList(int initialCapacity) 構(gòu)造器方法增加了集合初始化的最小容量
Void ensureCapacity(int minCapacity) 預擴充ArrayList的容量
Void trimToSize() 把集合的Capacity縮小到Size的大小
下面做一個ArrayList小例子:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/**
* @功能:ArrayList的應用小例子
* @author JackRui
* @時間:2009.03.31
*/
public class ArrayListDemo {
public static void main(String[] args) {
//利用ArrayList本身的特性
System.out.println("利用ArrayList本身的特性");
ArrayList list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.remove("bbb");
list.add("ddd");
for (int i=0,lsize=list.size();ilsize;i++){
System.out.println(list.get(i));
}
//利用Iterator遍歷
System.out.println("利用Iterator遍歷");
Collection clist = new ArrayList();
clist.addAll(list);//添加元素不能采用Iterator接口
Iterator iter = clist.iterator();
while(iter.hasNext()){
String s = (String)iter.next();
if(s.equals("ddd")){
iter.remove();//可以通過Iterator接口對元素進行刪除
}else{
System.out.println(s);
}
}
//利用ListIterator遍歷
System.out.println("利用ListIterator遍歷");
List list2 = new ArrayList();
ListIterator lit = list2.listIterator();
if(!lit.hasNext()){
lit.add("haha");//可以通過ListIterator接口進行集合元素的添加
lit.previous();
System.out.println(lit.next());
}
}
}
運行結(jié)果如下:
利用ArrayList本身的特性
aaa
ccc
ddd
利用Iterator遍歷
aaa
ccc
利用ListIterator遍歷
haha
解析:3種方法中,第一種方法不通用,不建議使用。第2種方法最通用,但僅支持單向遍歷,而且對象的添加需要分開實現(xiàn)。第3種方法可以雙向遍歷,而且可以直接使用ListIterator接口來添加對象。
參考資料:
希望能幫到您,O(∩_∩)O謝謝!
標題名稱:動態(tài)數(shù)組代碼java 動態(tài)數(shù)組是什么
本文網(wǎng)址:http://jinyejixie.com/article14/hepjge.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、微信公眾號、虛擬主機、動態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)