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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux运维面试题大厂,大厂Linux运维面试题详解「建议收藏」

    linux运维面试题大厂,大厂Linux运维面试题详解「建议收藏」大厂面试题:网络基础类面试题01.Linux运维经典面试题_网络基础-视频介绍02.Linux运维经典面试题_网络基础-面试题103.Linux运维经典面试题_网络基础-面试题204.Linux运维经典面试题_网络基础-面试题3Linux系统管理类面试题05.Linux运维经典面试题_Linux系统管理类-权限优化06.Linux运维经典面试题_Linux系统管理类-备份策略07.Linux运维经…

    2022年5月27日
    36
  • ubuntu16.04.3安装教程_Ubuntu16下安装QQ

    ubuntu16.04.3安装教程_Ubuntu16下安装QQUbuntu16.04.1安装NginxNginx(“enginex”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集

    2025年12月4日
    3
  • requestmethod post和get_post与get

    requestmethod post和get_post与get一、GetMethodtry{HttpClientclient=newHttpClient();StringOrderId_url="http://api.t.sina.com.cn/short_url/shorten.json?source=3271760578&amp;url_long="+req.ge…

    2025年11月28日
    8
  • Nexus3的使用[通俗易懂]

    Nexus3的使用[通俗易懂]nexus的简介、安装以及Maven项目中使用Nexus仓库

    2022年7月12日
    20
  • pycharm怎么调背景_背景图片简约

    pycharm怎么调背景_背景图片简约设置的路径为:File|Settings|Appearance&amp;amp;Behavior|Appearance选择BackgroundImage弹窗的窗口中Image:点击最右边选择图片opacity:透明度中间的图形表示图片效果.最右边的九宫格,可以调整图片的显示,如果不想显示图片的上半部分,点击上面的格子即可,同理往下是不显示图片的下面内容Editoran…

    2022年8月27日
    4
  • pycharm全局搜索(mac)

    pycharm全局搜索(mac)command+shift+f

    2022年5月31日
    77

发表回复

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

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