【问题标题】:Java Arrrays.asList issue [duplicate]Java Arrays.asList 问题 [重复]
【发布时间】:2015-04-02 11:02:11
【问题描述】:

我尝试在字符数组上使用 Arrays.asList() 方法,如下所示,

char[] array = "programming".toCharArray();
for (Character li : Arrays.asList(array)) {
  System.out.println(li);
}

但是有一个编译时错误。 这里 Array.asList 向我返回一个字符数组数组,如下所示

for (char[] li : Arrays.asList(array)) {
    System.out.println(li);
}

我所知道的是, Arrays.asList() 方法将数组的每个元素转换为 List 中的一个元素。 但是这里发生了什么? 任何人都可以帮助我理解这一点吗?

【问题讨论】:

  • “出现编译时错误”:什么错误?

标签: java arrays list collections


【解决方案1】:

Arrays.asList() 将每个引用类型元素转换为列表中的一个元素。因此,如果您传递一个基元数组,您将得到一个列表,其中包含一个元素,其类型就是您传递给它的数组的类型。

如果您传递 Character[] 数组而不是 char[] 数组,您将得到一个 List<Character> 包含输入数组的所有元素作为单独的元素。

Arrays.asList 的签名是 - public static <T> List<T> asList(T... a)。由于泛型类型参数必须是引用类型,因此传递原始数组被视为传递单个元素(其类型为数组类型),这将导致 List 具有单个数组元素。

【讨论】:

  • 但是我得到一个编译时错误,当我尝试这样做时..我很震惊地看到!!我的意思是,当我为 (char li : Arrays.asList(array)) { ... }
  • @ravinderreddy 你得到一个编译错误,因为在char[] 上调用Arrays.asList 会产生List<char[]>,而不是List<Character>
猜你喜欢
  • 2014-10-24
  • 2023-03-17
  • 2015-06-09
  • 2015-07-22
  • 2015-10-03
  • 2014-03-20
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多