创build一个原始的int列表?

有没有一种方法来创build一个原始的int列表或Java中的任何原语像下面一样?

List<int> myList = new ArrayList<int>(); 

看来我可以做List myList = new ArrayList();

并在此列表中添加“int”。 但是这意味着我可以添加任何东西到这个列表中。

是我唯一的select,创build一个int数组,并将其转换为列表或创build一个Integer对象列表?

在Java中,genericstypes参数必须是对象。 由于原语不扩展Object ,因此不能将其用作参数化types的genericstypes参数。

而是使用Integer类,它是int的包装器:

 List<Integer> list = new ArrayList<Integer>(); 

如果您使用Java 7,则可以使用钻石算子来简化此声明:

 List<Integer> list = new ArrayList<>(); 

在Java中自动装箱时,原始typesint将在必要时变为Integer

自动装箱是Java编译器在基元types和相应的对象包装类之间进行的自动转换。

所以下面是有效的:

 int myInt = 1; List<Integer> list = new ArrayList<Integer>(); list.add(myInt); System.out.println(list.get(0)); //prints 1 

不,在使用Java集合框架时,没有任何集合可以包含基本types。

但是,还有其他一些支持原始types的java集合,比如: Trove , Colt , Fastutil , Guava

使用Trove Library时,如何使用整数列表的例子如下:

  TIntArrayList list= new TIntArrayList(); 

该列表的性能与来自Java集合的整数的ArrayList相比要好得多,因为不需要对相应的整数包装类进行自动装箱/拆箱。

有没有办法在java中创build一个基本int或任何原语的列表

不,你不能。 您只能创build引用types列表,如IntegerString或您的自定义types。

看来我可以做List myList = new ArrayList(); 并在此列表中添加“int”。

int添加到此列表时,会自动将其填充为Integer包装types。 但是在新的代码中使用原始types列表或任何genericstypes是一个坏主意。

我可以添加任何东西到这个列表中。

当然,这是使用原始types的不利条件。 你可以把老虎恐龙 ,都放在一个容器里。

是我唯一的select,创build一个int数组并将其转换为一个列表

在这种情况下,您将只获得一个List<Integer> 。 您无法创buildList<int>或任何原语。

反正你不应该被打扰。 即使在List<Integer>您也可以添加一个int基本types。 它将被自动装箱,如下例所示:

 List<Integer> list = new ArrayList<Integer>(); list.add(5); 

尝试使用apache框架中的ArrayIntList。 它的工作方式与arraylist完全相同,只是它可以保存原始的int。

更多细节在这里 –

https://commons.apache.org/dormant/commons-primitives/apidocs/org/apache/commons/collections/primitives/ArrayIntList.html

您可以使用Eclipse集合中提供的原始集合。 Eclipse集合具有ListSetBagMap等所有基元。 原始集合中的元素被维护为原语,并且不发生装箱。

你可以像这样初始化一个IntList :

 MutableIntList ints = IntLists.mutable.empty(); 

你可以像这样从一个List<Integer>转换成IntList

 List<Integer> integers = new ArrayList<>(); MutableIntList ints = ListAdapter.adapt(integers).collectInt(each -> each); 

注意:我是Eclipse Collections的贡献者。

这不可能。 java规范禁止在generics中使用原语。 但是,你可以创buildArrayList<Integer>并且如果i是一个int,那么调用add(i) ,这要归功于装箱。

集合使用支持引用types或wilcards的generics。 但是,您可以使用Integer包装器

 List<Integer> list = new ArrayList<>(); 

当您使用Java进行Android开发时,build议使用SparseIntArray来防止intInteger之间的自动装箱。

您可以在Android Developers文档中find更多信息到SparseIntArray ,并在Android上自动装箱的一个很好的解释在这里input链接描述

有没有办法将Integer []数组转换为int []数组?

Java核心库中的这个重大遗漏似乎在我所做过的每一个项目上都出现了。 就像Trove库一样方便,我无法parsing一个精确的需求来满足一个Android应用程序的LPGL,这个应用程序可以静态链接一个LGPL库(前言说的没问题,主体看起来好像不一样)。 只是简单的不方便的去撕裂Apache源来获得这些类。 必须有更好的方法。

Java集合应该只是Object的集合。

 List<int> intList = new ArrayList<int>(); 

和…一样

 List<Integer> integerList = new ArrayList<Integer>(); 

整数是基本数据types为int的包装类。

更多来自这里的 JAVA包装类!

U可以直接保存并从整数列表中获取int int integerList.add(intValue); int intValue = integerList.get(i)