相关疑难解决方法(0)

在一行中初始化ArrayList

我想创建一个用于测试目的的选项列表.起初,我这样做了:

ArrayList<String> places = new ArrayList<String>();
places.add("Buenos Aires");
places.add("Córdoba");
places.add("La Plata");
Run Code Online (Sandbox Code Playgroud)

然后我重构代码如下:

ArrayList<String> places = new ArrayList<String>(
    Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

java collections initialization arraylist

2626
推荐指数
20
解决办法
286万
查看次数

在Java中将数组转换为列表

如何将数组转换为Java中的列表?

我使用Arrays.asList()但行为(和签名)以某种方式从Java SE 1.4.2(现在存档中的文档)更改为8,我在网上找到的大多数片段使用1.4.2行为.

例如:

int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
Run Code Online (Sandbox Code Playgroud)
  • 在1.4.2上返回一个包含元素1,2,3的列表
  • 在1.5.0+上返回包含阵列垃圾邮件的列表

在许多情况下,它应该很容易被发现,但有时它可能会被忽视:

Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
Run Code Online (Sandbox Code Playgroud)

java arrays list data-conversion

957
推荐指数
13
解决办法
125万
查看次数

Java 7中的钻石运算符有什么意义?

java 7中的菱形运算符允许以下代码:

List<String> list = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)

但是在Java 5/6中,我可以简单地写:

List<String> list = new LinkedList();
Run Code Online (Sandbox Code Playgroud)

我对类型擦除的理解是这些完全相同.(无论如何,通用都会在运行时删除).

为什么要钻石头呢?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们将其作为功能提及?我对这个概念的理解是否有缺陷?

java generics diamond-operator java-7

438
推荐指数
5
解决办法
14万
查看次数

如何在Java中将int []转换为List <Integer>?

如何转换int[]List<Integer>Java中?

当然,我对任何其他答案感兴趣,而不是逐个循环地进行.但如果没有其他答案,我会选择那个最好的,以表明这个功能不是Java的一部分.

java arrays collections autoboxing boxing

347
推荐指数
13
解决办法
37万
查看次数

ArrayList初始化等效于数组初始化

我知道您可以在实例化期间初始化数组,如下所示:

String[] names = new String[] {"Ryan", "Julie", "Bob"};
Run Code Online (Sandbox Code Playgroud)

有没有办法用ArrayList做同样的事情?或者我必须单独添加内容array.add()吗?

java arrays initialization arraylist

258
推荐指数
7
解决办法
20万
查看次数

Java SafeVarargs注释,是否存在标准或最佳实践?

我最近遇到了java @SafeVarargs注释.谷歌搜索使Java中的可变函数不安全的原因让我感到困惑(堆中毒?擦除类型?),所以我想知道一些事情:

  1. 是什么让可变参数Java函数在@SafeVarargs意义上不安全(最好以深入的例子的形式解释)?

  2. 为什么这个注释留给程序员自行决定?这不是编译器应该能够检查的东西吗?

  3. 是否有必须坚持一些标准,以确保他的功能确实安全?如果没有,确保它的最佳做法是什么?

java variadic-functions java-7

166
推荐指数
2
解决办法
2万
查看次数

如何从数组创建流?

目前,每当我需要从数组创建流时,我都会这样做

String[] array = {"x1", "x2"};
Arrays.asList(array).stream();
Run Code Online (Sandbox Code Playgroud)

是否有一些从数组创建流的直接方法?

java arrays java-8 java-stream

127
推荐指数
3
解决办法
6万
查看次数

将数组转换为ArrayList

我在将数组转换为ArrayListJava时遇到了很多麻烦.这是我现在的阵列:

Card[] hand = new Card[2];
Run Code Online (Sandbox Code Playgroud)

"手"拥有一系列"卡片".这看起来像是ArrayList什么样的?

java arrays list arraylist blackjack

80
推荐指数
3
解决办法
13万
查看次数

数组的Arrays.asList()

这次转换有什么问题?

public int getTheNumber(int[] factors) {
    ArrayList<Integer> f = new ArrayList(Arrays.asList(factors));  
    Collections.sort(f);
    return f.get(0)*f.get(f.size()-1);
}
Run Code Online (Sandbox Code Playgroud)

我在从数组中读取Create ArrayList中找到的解决方案之后做了这个.第二行(排序)getTheNumber(...)导致以下异常:

线程"main"中的异常java.lang.ClassCastException:[我无法转换为java.lang.Comparable]

这有什么不对?我确实意识到排序可以完成Arrays.sort(),我只是好奇这个.

java arrays integer arraylist

38
推荐指数
4
解决办法
10万
查看次数

为什么Collections.addAll应该比c.addAll更快

Java的API文档说有关以下Collections.addAll

这种方便方法的行为与c.addAll(Arrays.asList(elements))的行为相同,但在大多数实现中,此方法可能运行得更快.

所以,如果我理解正确,a)比​​b)慢:

一个)

Collection<Integer> col = new ArrayList<Integer>();
col.addAll(Arrays.asList(1, 2, 3, 4, 5));
Run Code Online (Sandbox Code Playgroud)

b)

Collection<Integer> col = new ArrayList<Integer>();
// Collections.addAll(col, Arrays.asList(1, 2, 3, 4, 5)); <-- won't compile
Collections.addAll(col, 1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释,为什么会这样?

编辑:更正的代码示例.thx到polygenelubricants

java collections performance

36
推荐指数
1
解决办法
2万
查看次数