谈谈 Arrays.asList() 方法

尝试回答如下代码打印结果

我自信的回答到 这还不是 4?

但是控制台的输出却 啪啪啪的打响了我的老脸…
原因:

asList()方法传入的参数不能是基本类型的数组,必须包装成 包装器类型再使用,否则对应生成的列表的大小永远是 1

到底是为啥呢?从反编译结果来

asList()方法传入的参数基本类型的数组
public static void main(String args[])
{
int arr1[] = {
1, 2, 3, 4
};
// 注意这里被反编译成二维数组,而且是一个 1 行 4 列的二维数组
// list.size()当然返回1
List list = Arrays.asList(new int[][] { arr1 });
System.out.println(list.size());
}

传入基本类型的数组后,会被转换成一个二维数组,而且是new int[1][arr.length]这样的数组,调用 list.size()当然返回 1。

asList()方法传入的参数包装器类型的数组
public static void main(String args[])
{
// 使用包装类型,全部元素由int包装为Integer
Integer arr2[] = {
Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3), Integer.valueOf(4)
};
List list1 = Arrays.asList(arr2);
System.out.println(list1.size());
}

悟了!以后用Arrays.asList() 一定要传入包装器类型的数组…

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇