當前位置:首頁 » 編程語言 » java數組動態

java數組動態

發布時間: 2023-01-14 13:45:57

java中動態數組是怎麼回事

動態數組我學習過,在java中的動態數組其實不是真正的動態,是通過數組的拷貝實現的。

importjava.util.Arrays;

/**

*

*@authorfengcl

*email:[email protected]

*2011-10-10

*/

publicclassDinamyArrayDemo{

publicstaticvoidmain(String[]args){

/*

*定義一個int類型的數組,其長度為0

**/

int[]num={};

for(inti=0;i<10;i++){

/*數組每次動態的增加一個長度,

*並給數組賦值

**/

num=Arrays.Of(num,num.length+1);

num[num.length-1]=i;

/*列印出數組的各個元素*/

System.out.println(Arrays.toString(num));

}

/*P.S.:其實動態數組並不是真正的動態,只是通過數組的拷貝來實現

*動態的增加。這是我培訓的時候,老師講的一個小案例

**/

}

}

希望對你有用^_^

⑵ JAVA如何實現動態數組

動態數組用ArrayList 它的底層就是動態數組

ArrayList

ArrayList 集合的存取方式和數組操作很類似,可以按照index順序來存取集合中的元素,但是還是建議採用更通用的迭代器來進行ArrayList的遍歷。
ArrayList與數組最大的區別就是它是可變數組,在初始化ArrayList集合的時候,可以指定一個初始化容量(Capacity 集合中可容納元素的數量),不指定的時候,系統會指定一個默認的容量值。當我們向ArrayList集合添加元素的時候,實際上是存放元素數量(size)在不斷的增加,當容量不變,當數量增長到初始容量大小的時候,因為沒有空間導致元素添加阻塞,這時候該集合的容量會按照一定增長策略自動增長,容量增長後,可以繼續向集合中添加元素。可變數組是ArrayList的優點,但從另外一個角度考慮,容量的增長是需要付出額外的代價的,所以在性能上有所損失。性能問題的一種解決思路是我們可以在向集合添加大量元素之前,根據欲添加元素的數量,預先擴充容量,採用的是ensureCapacity方法。
ArrayList是一種線性表,在內存中是連續存儲的,適合於元素的隨機存取。添加和刪除操作是需要依據添加的位置來定,如果在ArrayList最後元素後面添加和刪除元素,在性能方面還算好,但是如果是在ArrayList中間添加和刪除元素的話,代價就會很大。因為,ArrayList需要維護整個集合元素的順序存儲,所以需要處理欲添加和刪除元素位置之後的所有元素。
ArrayList的實現不是線程安全的。也就是說,如果有多個線程同時操作ArrayList集合對象,而且其中至少有一個線程的操作涉及到集合對象中元素的修改(添加和刪除),則該線程內對集合對象操作的方法需要實現同步。這也是ArrayList與Vector的主要區別。在新的集合框架的實現上,基於性能的考慮,大部分的集合設計都是線程不安全的。如果有同步需求,在用戶自己的實現中可以實現同步,實現的方法有2種:
1、在操作集合對象的方法上使用synchronized關鍵字。
2、如果方法不可修改,則可在定義集合的時候,定義同步化的集合對象(採用Collections工具類的方法),類似:
List list = Collection.synchronizedList(new ArrayList(.....));
(此處深入說明下,在採用Iterator遍歷集合的時候,如果有其他線程修改了集合(添加或刪除操作),那麼Iterator的處理會中止並拋出異常,這是集合處理中的Fail-safe特性)
ArrayList提供的方法中,除了Collection和List的公用方法外,又加入了一些新的方法。

ArrayList(int initialCapacity) 構造器方法增加了集合初始化的最小容量
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();i<lsize;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());
}

}

}
運行結果如下:
利用ArrayList本身的特性
aaa
ccc
ddd
利用Iterator遍歷
aaa
ccc
利用ListIterator遍歷
haha

解析:3種方法中,第一種方法不通用,不建議使用。第2種方法最通用,但僅支持單向遍歷,而且對象的添加需要分開實現。第3種方法可以雙向遍歷,而且可以直接使用ListIterator介面來添加對象。

參考資料:http://fusanjiao.javaeye.com/blog/639963
希望能幫到您,O(∩_∩)O謝謝!

⑶ java數組中怎麼動態添加元素

java數組循環添加元素,實例如下:
public class ceshi {
public static void main(String[] args) throws Exception {
int[] intArray = new int[10];//新建一個int類型數組
for (int i = 0; i < 9; i++) {
intArray[i] = i;
System.out.println("循環給int數組賦值,列印出來的值為 " + intArray[i]);
}

}

}

⑷ java如何定義動態數組

去看看jdk中ArrayList的內部機制就知道如何定義了,它基礎原理就是先聲明並初始化一個指定大小的數組,當用戶往數組里添加元素時去判斷是否達到數組是最大下標,如果大於了數組下標會新建一個比原數組大數組再將原數組的內容過來,至於里邊的實現和演算法肯定不是這么簡單,詳細了解就去打開來讀讀

⑸ Java動態數組

ArrayList就是一個可以變成的數組(你可以這樣理解)
ArrayList<E> 其中E是一個泛型,例如,ArrayList<String> array=new ArrayList<String>();則表示新建一個存放String的可變長數組。
ArrayList<Object> array1=new ArrayList<Object>()則為一個存放Object的可變長數組。
記住,這種樣式的E,有的用T表示,它的意思為泛型。泛型是什麼就不介紹了。
而且,E只能是一個類的類名,如果你是變為ArrayList<int>則是錯誤的,要用ArrayList<Integer>才可以

⑹ java的靜態數組和動態數組有什麼區別

鏈接: https://pan..com/s/1E79G006IL4fnyjoRL0v9aw

提取碼: d6gp

靜態數組,其實在很多的時候,靜態數組根本不能滿足我們編程的實際需要,比方說我需要在程序運行過程中動態的向數組中添加數據,這時我們的靜態數組大小是固定的,顯然就不能添加數據,要動態添加數據必須要用到動態數組,動態數組中的各個元素類型也是一致的,不過這種類型已經是用一個非常大的類型來攬括—t類型。

⑺ Java如何定義動態數組

可以用arraylist:
list
數組名=new
arraylist();
然後你想增加元素可用「數組名.add(需要添加的元素)"方法!

⑻ Java的動態數組怎麼做

Java動態數組是一種可以任意伸縮數組長度的對象,在Java中比較常用的是ArrayList,ArrayList是javaAPI中自帶的java.util.ArrayList。下面介紹一下ArrayList作為Java動態數組的用法。
Java動態數組是一種可以任意伸縮數組長度的對象,在Java中比較常用的是ArrayList,ArrayList是javaAPI中自帶的java.util.ArrayList。下面介紹一下ArrayList作為Java動態數組的用法。
1.語法:add()是添加一個新的元素,
remove()刪除一個元素,
size()獲得ArrayList的長度。
ArrayList的下標是從0開始。
2.示例代碼
import java.util.ArrayList;

public class JavaArrayList {
public static void main(String[]args) {
//Java動態數組的初始化
ArrayList al=new ArrayList();
//向Java動態數組中添加數據
al.add("a");
al.add("b");
al.add("c");
//輸出Java動態數組
for(int i=0;i<al.size();i++) {
String alEach=(String)al.get(i);
System.out.println(alEach);
}
//刪除數組中的某個元素,刪除第二個元素
al.remove(1);
//修改Java動態數組,把新的元素放到第二個位置
al.add(1,"2");
//輸出Java動態數組
for(int i=0;i<al.size();i++) {
String alEach=(String)al.get(i);
System.out.println(alEach);
}
}
}
輸出如下:
a
b
c
a
2
c
PS:java的一維動態數組一般是使用集合的:ArrayList,HashMap等
泛型:
ArrayList<T> a = new ArrayList<T>();
T是你數組里 存的類型 比如String類型的 比如int的
你可以去看下泛型 就明白了

⑼ java動態數組

提供範例參考

ArrayList是JAVA當中的一個類別

與Array差在於因為他是一個寫好的類別,有很多可以直接用的程式碼,所以很方便

使用方法:

1.建構

ArrayList<String> myList = new ArrayList<String>(); //指定是String的型態

ArrayList myList = new ArrayList(); // 也可以不指定

2.加入元素

String s = new String();

myList.add(s);

3.查詢list大小

int theSize = myList.size();

4.查詢特定元素

boolean isIn = myList.contains(s); //若用上面的例子 因為有s字串 所以回傳true

5.查詢特定元素位置

int idx = myList.indexOf(s); //會回傳0 表第0個位置

6.判斷List是否為空

boolean empty = myList.isEmpty(); //因為有一個元素 會回傳false

7.刪除特定元素

myList.remove(s);

⑽ JAVA中如何動態改變數組長度 動態數組 array

java中的數組一旦被定義長度是不允許修改長度的,如果題主希望實現類似的功能可以採用ArrayList。ArrayList的底層結構就是數組。當ArrayList實例化時會默認設置一個長度,當長度不夠用時會自動擴展現有長度的1/2.(假設初始數組長度為10,現在變成了15)


System.array(Object src,int srcPos,Object dest,int destPos,int length )能夠實現數組復制的功能。

假設有數組a(src),數組b(dest),我們希望把a數組中從下標為2(srcPos)長度為3(length)的元素復制到b的下標為4(destPos)開始的元素中。java代碼示例如下:

inta=[1,3,5,7,9];
intb=[2,4,6,8,0,2,4];
System.array(a,2,b,4,3);

//最終b的內容為[2,4,6,8,5,7,9];

但是如果注意API的話會發現array有幾個限制

1、a,b的元素類型必須相同(int和Integer這里也是需要區分的)

2、數組不能越界,也就是srcPos+length不能超過a的長度;desPos+length也不能超過b的長度,否則就會報數組越界的一場。這也說明了無法實現數組長度的動態擴展。

熱點內容
電腦配置低怎麼變得不卡 發布:2025-07-15 05:34:08 瀏覽:844
ios火影忍者手游腳本 發布:2025-07-15 05:31:34 瀏覽:82
iphone支付密碼忘了怎麼辦 發布:2025-07-15 05:30:55 瀏覽:775
c語言打開網頁 發布:2025-07-15 05:21:33 瀏覽:640
如何製作我的世界模組伺服器 發布:2025-07-15 05:21:33 瀏覽:903
phparray加 發布:2025-07-15 05:20:41 瀏覽:782
4000以內二手安卓機怎麼選 發布:2025-07-15 05:11:25 瀏覽:644
靜態編譯修復器 發布:2025-07-15 05:11:24 瀏覽:506
iphonexr的存儲空間 發布:2025-07-15 05:09:20 瀏覽:328
能緩存航海王 發布:2025-07-15 04:55:38 瀏覽:91