「java动态数组定义数组」java动态创建对象数组

博主:adminadmin 2023-01-20 08:30:13 400

本篇文章给大家谈谈java动态数组定义数组,以及java动态创建对象数组对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java如何定义动态数组

可以用arraylist:

list

数组名=new

arraylist();

然后你想增加元素可用“数组名.add(需要添加的元素)"方法!

java如何定义动态数组

相对于C++中在栈里面申请数组控件的话,java里面的数组都是动态的,因为数组的大小是可以在运行时决定,c++中的栈中申请的数组大小,一定是在编译时候决定的。

int[] a = new int[345]. 当然在这之后数组的大小就固定了。

当然这个视角是从运行和编译的时候来看。

我估计你要的是长度可以随时变化的数组吧,你用ArrayList。

java.util.ArrayList

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;ial.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;ial.size();i++)

{

String

alEach=(String)al.get(i);

System.out.println(alEach);

}

}

}

输出如下:

a

b

c

a

2

c

PS:java的一维动态数组一般是使用集合的:ArrayList,HashMap等

泛型:

ArrayListT a = new ArrayListT();

T是你数组里 存的类型

比如String类型的 比如int的

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的处理会中止并抛出ConcurrentModificationException异常,这是集合处理中的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();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());

}

}

}

运行结果如下:

利用ArrayList本身的特性

aaa

ccc

ddd

利用Iterator遍历

aaa

ccc

利用ListIterator遍历

haha

解析:3种方法中,第一种方法不通用,不建议使用。第2种方法最通用,但仅支持单向遍历,而且对象的添加需要分开实现。第3种方法可以双向遍历,而且可以直接使用ListIterator接口来添加对象。

参考资料:

希望能帮到您,O(∩_∩)O谢谢!

Java动态二维数组 怎么动态定义

有两种实现方法:

可以用List数组来实现

可以用map来实现

方法一:用map来实现

比如要创建一个1行、3列的数组,实现方法如下:

public static void main(String[] args) throws CloneNotSupportedException {

   MapDouble, ListDouble myMap = create(1, 3);

}

public static MapDouble, ListDouble create(double row, double column) {

   MapDouble, ListDouble doubleMap = new HashMapDouble, ListDouble();

   for (double x = 0; x row; x++) {

       for (double y = 0; y column; y++) {

           doubleMap.put(x, new ArrayListDouble());

       }

   }

   return doubleMap;

}

方法二:

可以用List数组来实现

public static void main(String args[]) {

//list 作为动态二维数组

ListListString list = new ArrayList();

ListString a1 = new ArrayListString();

ListString a2 = new ArrayListString();

ListString a3 = new ArrayListString();

list.add(a1);

list.add(a2);

list.add(a3);

a1.add("string1 in a1");

a1.add("string2 in a1");

a2.add("string1 in a2");

a3.add("string1 in a3");

a3.add("string2 in a3");

for (int i = 0; i  list.size(); ++i) {

for (int j = 0; j  list.get(i).size(); ++j)

System.out.println(list.get(i).get(j));

}

}

Java里我想定义一个动态数组 键盘输入值 把这个输入的值付给这个动态数组怎么写啊

import java.util.Arrays;

import java.util.Scanner;

import java.util.Vector;

public class Test {

public static void main(String[] args) {

// import java.util.Vector;

VectorInteger v = new VectorInteger();

// import java.util.Scanner;

Scanner sc = new Scanner(System.in);

String s = sc.nextLine();

while (!s.equals("")) {

v.add(Integer.parseInt(s));

s=sc.nextLine();

}

Integer[] x = new Integer[v.size()];

v.toArray(x);

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

}

}

java动态数组定义数组的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java动态创建对象数组、java动态数组定义数组的信息别忘了在本站进行查找喔。