首页 > 编程语言 >不确定大小的数组怎么办?Java中三种常用的方法

不确定大小的数组怎么办?Java中三种常用的方法

时间:2023-07-12 17:55:12浏览次数:55  
标签:Java 创建 list 三种 数组 大小 new array

Java中如何操作不确定大小的数组

1.  前言

 1.1  什么是数组

数组是一种存储多个相同类型数据的有序集合,它可以通过索引来访问每个元素。数组是一种引用类型的变量,它在内存中占用一块连续的空间。

 1.2  数组的特点

数组有以下几个特点:

- 数组的长度是确定的,一旦创建就不能改变。
- 数组的元素必须是相同类型,不允许出现混合类型。
- 数组的类型可以是任何数据类型,包括基本类型和引用类型。

2.  如何操作不确定大小的数组

有时候,我们在创建数组时并不知道它的大小,或者在使用过程中需要动态地调整它的大小。这时候,我们可以采用以下几种方法:

2.1  使用集合类

集合类是一种提供了动态数组功能的类,它可以根据需要增加或减少元素,并提供了转换为数组的方法。Java中常用的集合类有ArrayList和Vector,它们都实现了List接口,提供了一些方便的操作方法。

例如,我们可以使用ArrayList来创建一个不确定大小的整数数组,如下所示:

```java
// 创建一个空的集合
List<Integer> list = new ArrayList<>();

// 向集合中添加元素
list.add(1);
list.add(2);
list.add(3);

// 将集合转换为数组
Integer[] array = list.toArray(new Integer[0]);

 

list.toArray(new Integer[0])

括号里的参数代表要转换成的数组的类型和大小。如果参数是一个空数组,比如new Integer[0],那么toArray方法会根据集合的大小和类型创建一个新的数组并返回。如果参数是一个预先分配好的数组,比如new Integer[list.size()],那么toArray方法会把集合的元素填充到这个数组中,并返回这个数组

如果你想把List<Integer>转换成int[],你需要先把List<Integer>转换成Integer[],然后再用循环或者Arrays类的方法把Integer[]转换成int[]。

2.2  使用延迟创建

延迟创建是指先将数组初始化为null,等到我们知道需要多大的数组时再创建。这样,我们可以避免创建不必要的数组或浪费内存空间。

例如,我们可以使用延迟创建来创建一个不确定大小的字符串数组,如下所示:

// 先将数组初始化为null
String[] array = null;

// ...一些其他的代码...

// 假设我们现在知道了数组的大小
int size = 10;

// 再创建数组
array = new String[size];

这样,我们就可以根据实际情况来创建合适大小的数组,并且可以通过array来访问它们。

2.3   使用System.arraycopy方法

System.arraycopy方法是一个静态方法,它可以将一个数组的内容复制到另一个数组中。这样,我们可以创建一个新的更大或更小的数组,并将原来的数组复制过去。这样,我们可以保留原来的数据,并且可以调整数组的大小。

例如,我们可以使用System.arraycopy方法来扩展一个已有的整数数组,如下所示:

// 创建一个大小为5的数组
int[] array = new int[5];

// ...给数组赋值...

// 创建一个大小为10的新数组
int[] newArray = new int[10];

// 将原来的数组复制到新数组中
System.arraycopy(array, 0, newArray, 0, array.length);

// 让array指向新数组
array = newArray;

这样,我们就可以使用newArray来存储更多的整数,并且可以通过array来访问它们。

总结

本文介绍了Java中如何操作不确定大小的数组的几种方法,分别是使用集合类、使用延迟创建和使用System.arraycopy方法。这些方法各有优缺点,需要根据具体情况选择合适的方法。希望本文对你有所帮助。

标签:Java,创建,list,三种,数组,大小,new,array
From: https://www.cnblogs.com/shoshana-kong/p/17548314.html

相关文章

  • Java实现浏览器端大文件分片上传解决方案
    ​ 上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里......
  • Java Map 通过key过滤
    pom文件:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.1-jre</version></dependency>代码:packagecom.example.core.utils.collections;importcom.google.common.......
  • 你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】
    ......
  • 职场 上 女性 三种状态 未婚,已婚无孩,已婚有孩 在求职过程中 哪个更有优势
    你的问题是关于职场上女性三种状态(未婚,已婚无孩,已婚有孩)在求职过程中哪个更有优势。这是一个涉及到性别平等、社会观念、行业特点等多方面因素的复杂话题,没有一个简单的答案。不过,我可以根据网上的一些资料,给你一些参考信息。首先,我们来看看女性在职场中有哪些优势和劣势。根据一......
  • Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRange
    http://c.biancheng.net/view/924.html所谓复制数组,是指将一个数组中的元素在另一个数组中进行复制。本文主要介绍关于 Java 里面的数组复制(拷贝)的几种方式和用法。在Java中实现数组复制分别有以下4种方法:Arrays类的copyOf()方法Arrays类的copyOfRange()方法Syst......
  • 初识Java
    Java帝国三高:高可用、高性能、高并发Java三大版本JavaSE:标准版(桌面程序、控制台开发...)JavaME:嵌入式开发(手机,小家电...)JavaEE:E企业级开发(web端、服务器开发...)Java开发常用平台、系统、工具构建工具:Maven、Ant、Jekins应用服务器:Tomcat,Jetty,Jboss,WebsphereWeb开......
  • Java实现浏览器端大文件分片上传功能
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{    InputStreamstream=file.getInputStream();// 把文件读入    StringfilePath=request.......
  • Java实现浏览器端大文件分片上传方案
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。pub......
  • Java中Timer的用法
    用法很简单,new一个timer,然后写一个timertask的子类即可。代码如下:packagecomz.autoupdatefile;importjava.util.Timer;importjava.util.TimerTask;publicclassM{publicstaticvoidmain(String[]args){//TODOtodo.generatedbyzoe......
  • 跨平台GUI开发技术:QT,GTK+, C#(WinForm/WPF), Java(Swing/AWT/JavaFX), Electron, comp
    1.Compose-multiplatformJetbrian推出的跨全平台开发组件技术,android/ios/desktop(win,linux,mac)/web,目前生态完善中,还不够成熟,但有潜力,支持原生接口调用,kotlin作为主要语言。https://www.jetbrains.com/zh-cn/lp/compose-multiplatformhttps://github.com/JetBrains/compose-......