Java 数组转list_string数组转list

Java 数组转list_string数组转listava中数组转list使用Arrays.asList(T…a)方法。示例:publicclassApp{publicstaticvoidmain(String[]args){List<String>stringA=Arrays.asList("hello","world","A");String[]stringArray={"h…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ava中数组转list使用Arrays.asList(T… a)方法。

示例:

public 
class 
App {
  
public 
static 
void 
main(String[] args) {
    
List<String> stringA = Arrays.asList(
"hello"

"world"
,
"A"
);
    
String[] stringArray = {

"hello"
,
"world"
,
"B"
};
    
List<String> stringB = Arrays.asList(stringArray);
    
System.out.println(stringA);
    
System.out.println(stringB);
  
}
}

 运行结果:

[hello, world, A]
[hello, world, B]

 这个方法使用起来非常方便,简单易懂。但是需要注意以下两点。

一、不能把基本数据类型转化为列表

仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:

public 
class 
App {
  
public 
static 
void 
main(String[] args) {
    
int
[] intarray = {

1

2

3

4

5
};
    
//List<Integer> list = Arrays.asList(intarray); 编译通不过
    
List<
int
[]> list = Arrays.asList(intarray);
    
System.out.println(list);
  
}
}
output:
[[I
@66d3c617
]

这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。

解决方案:

  要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:

int
[] intArray = {

1

2

3

4
};
List<Integer> list = Ints.asList(intArray);

 二、asList方法返回的是数组的一个视图

视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。

public 
class 
App {
  
public 
static 
void 
main(String[] args) {
    
int
[] intArray = {

1

2

3

4
};
    
List<Integer> list = Ints.asList(intArray);
    
list.set(
0

100
);
    
System.out.println(Arrays.toString(intArray));
    
list.add(
5
);
    
list.remove(
0
);
  
}
}

 output:

[
100

2

3

4
]
UnsupportedOperationException
UnsupportedOperationException

原因:

get(i)? size()? 没有问题。

add()? ,不支持这个操作!!

Java 数组转list_string数组转list

为什么呢?来看看Arrays.asList(T…a)方法到底做了什么吧。

Java 数组转list_string数组转list

嗯~~好像没有什么呀,返回了一个ArrayLIst的实例啊。再多看点代码:

Java 数组转list_string数组转list

这是什么鬼,原来返回的ArrayList不是java.util.ArrayList,而是Arrays中的一个内部类实例。一下子就感到被欺骗了。

看看这个内部类都有什么方法吧,貌似的确么有add方法呀~~

Java 数组转list_string数组转list

那么如果想要使用add方法应该如何做呢?

Java 数组转list_string数组转list

只需要在外层再使用java.util.ArrayList包装一层就可以了。

最后,Arrays.asList方法本身是没有任何问题的,只是看要对转换出来的list做什么操作,如果只是需要查询list中的元素,那么直接使用就好;如果还需要再次添加、移除元素,那么就包装一层java.util.ArrayList再使用吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172273.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Fiddler+雷电模拟器进行APP抓包

    Fiddler+雷电模拟器进行APP抓包1、Fiddler下载地址:下载最新版Fiddler,强烈建议在官网下载:https://www.telerik.com/download/fiddler雷电模拟器下载地址:选择3.0正式版(注意,高版本无法抓包,只能下载3.0正式版)https://www.ldmnq.com/other/version-history-and-release-notes.html?log=3正常傻瓜式安装,下一步,下一步,安装完毕后,先不用急于打开软件。3.下载并安装Fiddler证书生成器:http:

    2022年5月30日
    196
  • 安卓短信转发qq邮箱

    安卓短信转发qq邮箱fork一个github项目简介准备工作Tips简介最近不怎么带手机,所以收不到一些验证码什么的,所以想搞一个app放手机上将短信以有邮件的形式发送到指定邮箱,然后用电脑查看邮件,这样就可以不用带手机了。在github上找到一个项目叫sms-backup-plus,于是准备在这个项目的基础上进行更改。准备工作安装androidStudio学习kotlin怎么整合java和k…

    2022年9月25日
    0
  • pantum打印机驱动安装m6506_打印机驱动怎么装(安装步骤)[通俗易懂]

    pantum打印机驱动安装m6506_打印机驱动怎么装(安装步骤)[通俗易懂]  您可以先下载打印机的驱动,首先打开控制面板,然后双击控制面板中的打印机和传真图标,安装新打印机直接点左边的添加打印机,接着弹出添加打印机向导,系统将自动检测打印机类型。接下来详细介绍:  1、一般打印机的说明书上会有驱动的下载链接或者是直接上品牌官网找到下载中心,下载对应型号的驱动;  2、在打开开始菜单找到【设备和打印机】,或者从【控制面板】中找到,硬件和声音的相关选项找到;  3、点击页面…

    2022年4月19日
    945
  • idea激活码永久有效_最新在线免费激活[通俗易懂]

    (idea激活码永久有效)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html08G05E7DZH-eyJsaWNlbnNlSW…

    2022年3月28日
    53
  • 为什么很少_OpenGL合并drawcall

    为什么很少_OpenGL合并drawcallhttps://www.zhihu.com/question/27933010

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号