相关疑难解决方法(0)

从数组创建ArrayList

我有一个初始化的数组,如:

Element[] array = {new Element(1), new Element(2), new Element(3)};
Run Code Online (Sandbox Code Playgroud)

我想将此数组转换为ArrayList类的对象.

ArrayList<Element> arraylist = ???;
Run Code Online (Sandbox Code Playgroud)

java arrays arraylist type-conversion

3441
推荐指数
31
解决办法
144万
查看次数

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

这类似于这个问题: 如何在Java中将int []转换为Integer []?

我是Java的新手.我怎么能转换List<Integer>int[]Java中?我很困惑,因为List.toArray()实际上返回一个Object[],可以强制转换为虚空Integer[]int[].

现在我正在使用循环来执行此操作:

int[] toIntArray(List<Integer> list){
  int[] ret = new int[list.size()];
  for(int i = 0;i < ret.length;i++)
    ret[i] = list.get(i);
  return ret;
}
Run Code Online (Sandbox Code Playgroud)

我相信有更好的方法可以做到这一点.

java arrays collections

545
推荐指数
11
解决办法
41万
查看次数

Java int []数组到HashSet <Integer>

我有一个int数组:

int[] a = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

我需要一个类型集:

Set<Integer> s;
Run Code Online (Sandbox Code Playgroud)

如果我执行以下操作:

s = new HashSet(Arrays.asList(a));
Run Code Online (Sandbox Code Playgroud)

当然,它认为我的意思是:

List<int[]>
Run Code Online (Sandbox Code Playgroud)

而我的意思是:

List<Integer>
Run Code Online (Sandbox Code Playgroud)

这是因为int是一个原语.如果我使用过String,那么一切都会起作用:

Set<String> s = new HashSet<String>(
    Arrays.asList(new String[] { "1", "2", "3" }));
Run Code Online (Sandbox Code Playgroud)

如何轻松,正确和简洁地从:

A) int[] a...
Run Code Online (Sandbox Code Playgroud)

B) Integer[] a ...
Run Code Online (Sandbox Code Playgroud)

谢谢!

java generics collections

27
推荐指数
3
解决办法
4万
查看次数

22
推荐指数
1
解决办法
1096
查看次数

将最简单的字节数组插入List <Byte>?

在某些代码中,我正在创建一个Bytes列表,并希望在构建它时将一个字节数组插入到列表中.这样做最干净的方法是什么?请参阅下面的代码 - 谢谢.

public class ListInsert {
    public static byte[] getData() {
        return new byte[]{0x01, 0x02, 0x03};
    }

    public static void main(String[] args) {
        final List<Byte> list = new ArrayList<Byte>();
        list.add((byte)0xaa);
        list.add(getData()); // I want to insert an array of bytes into the list here
        list.add((byte)0x55);
    }
}
Run Code Online (Sandbox Code Playgroud)

java list

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

将int []转换为ArrayList

int[]数组元素重新映射到的最佳方法是什么ArrayList

我需要快速做到这一点,那么最快的方法是什么?

java arrays arraylist

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

如何使用流在 Java 中将 short[] 转换为 List&lt;Short&gt;?

我想我可以从这个问题中推断出来,但我不能

我当然可以

short[] shortarray = {0,1,2};
List<Short> shortList = new ArrayList<Short>();
for (Short s : shortarray) {
    shortList.add(s);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道如何用流来做到这一点。

List<Short> shortList = Arrays.stream(shortarray).boxed()
                              .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

例如不起作用,但会产生 The method stream(T[]) in the type Arrays is not applicable for the arguments (short[])

java type-conversion java-stream

8
推荐指数
1
解决办法
1966
查看次数

检查数组中是否存在元素

一个简单的Java代码,用于检查数组中是否存在元素:

import java.util.Arrays;

public class Main {
    static int[] numbers = {813, 907, 908, 909, 910};

    public static void main(String[] args) {
        int number = 907;
        //Integer number = 907; // the same thing -- it's not found.
        boolean b = Arrays.asList(numbers).contains(number);
        System.out.println(b);  // => false
    }
}
Run Code Online (Sandbox Code Playgroud)

1)为什么在阵列中找不到907?

2)如果有更好的方法,请继续分享您的知识.

更新:

据说,asList将您转换int[]成一个List<int[]>成员:原始列表.但是,我希望以下代码能给我1,但它给了我5:

System.out.println(Arrays.asList(numbers).size());
Run Code Online (Sandbox Code Playgroud)

java

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

java:了解基本类型的Arrays.asList(T ... array)方法

我写了下面的代码,并惊讶地看到输出:

    Integer a = 211;
    int b = 211;

    int[] array = {210,211,212};

    System.out.println(Arrays.asList(array).contains(a));
    System.out.println(Arrays.asList(array).contains(b));
Run Code Online (Sandbox Code Playgroud)

输出:

false
false
Run Code Online (Sandbox Code Playgroud)

我发现了这个问题以及与之相关的一些其他问题,并了解到该asList方法不是Autobox的东西.我在eclipse javadoc预览中检查了返回的类型:

在此输入图像描述

我无法理解这种返回类型.int[]是一个对象,而不是一个原始,所以它很好.我确定我没有得到List<Integer>(我预期的东西),但我不确定如何使用返回的东西.我的问题是:

    1.当我期待一个整数列表并获得一个int []列表时,我究竟期望列表方法能够正常工作吗?
    2.对于字符串,返回类型是字符串列表而不是字符串列表[].那里有什么样的实现差异?
    3.如果事情如此不确定,这种原始方法有什么用呢?

java arrays autoboxing list

7
推荐指数
1
解决办法
1094
查看次数

Java:为什么不在这里发生自动装箱?

这给了我一个错误:

int[] l = new int[] {0, 2, 192, -1, 3, 9, 2, 2};
int[] l2 = new int[] {9001, 7, 21, 4, -3, 11, 10, 10};
int[] l3 = new int[] {5, 5, 5, 64, 21, 12, 13, 200};

Set<List<Integer>> lists = new HashSet<List<Integer>>();
lists.add(Arrays.asList(l));
Run Code Online (Sandbox Code Playgroud)

Eclipse:add(List<Integer>)类型中的方法Set<List<Integer>>不适用于参数(List<int[]>)

我以为int应该被自动装箱了Integer

java generics autoboxing types

6
推荐指数
1
解决办法
1857
查看次数

查找大小,即存储在 Java 数组中的非空元素的数量

目的: Array.length为我们提供初始化为数组的存储。但是想从初始化的总存储中找出存储在数组中的非空元素的数量。我知道很多方法都是可能的,但这里的问题与我使用的方法有关。

因为ArrayList有一个size()方法可以让我们计算存储的实际元素,而不管初始化的总存储量如何。

所以,我想到将数组转换为ArrayList并找出大小。因此我使用Arrays.asList(a).size()如下所示:

public class Driver {

    public static void main(String []args)
    {
        int a[] = new int[10];
        a[0]=30;
        a[1]=100;
        a[2]=33;
        System.out.println((Arrays.asList(a)).size() );
    }
Run Code Online (Sandbox Code Playgroud)

奇怪的是,无论a[0], a[1], ,它都返回结果为 1 a[2]

如果我们使用 withArrayList而不是 Array执行相同的步骤,则会得到结果 3:

{
    List<Integer> temp = new ArrayList<Integer>(20); 
    System.out.println(temp.size()); 
    temp.add(20); 
    temp.add(40); 
    System.out.println(temp.size()); 
}
Run Code Online (Sandbox Code Playgroud)

结果是0 2

问题:是否应该同意实用程序的asListAPI 有Arrays问题,例如错误或限制?

备注: 查看内部实现,我理解asList调用构造函数ArrayList

  public ArrayList(Collection<? extends …
Run Code Online (Sandbox Code Playgroud)

java arrays

5
推荐指数
1
解决办法
2669
查看次数