If все, что вы хотите, чтобы преобразовать int[]
в List<Integer>
вы можете:
создать свой собственный ArrayList и добавьте элементы вручную
List<Integer> list = new ArrayList<Integer>(intArray.length);
for(int value : intArray){
list.add(value);
}
Или вы можете легко написать свой собственный класс, реализующий список, используя примитивную поддержку массива:
public final class IntArrayList extends AbstractList<Integer> implements RandomAccess {
private final int[] array;
public IntArrayList(int[] array) {
this.array = array;
}
@Override
public Integer get(int index) {
return array[index];
}
@Override
public int size() {
return array.length;
}
@Override
public Integer set(int index, Integer element) {
Integer old = array[index];
array[index] = element.intValue();
return old;
}
public int indexOf(Object o) {
if(o==null){
return -1;
}
if(!(o instanceof Integer)){
return -1;
}
int val = ((Integer)o).intValue();
for (int i=0; i<array.length; i++){
if (val==array[i]){
return i;
}
}
return -1;
}
public boolean contains(Object o) {
return indexOf(o) != -1;
}
/**
* Optimization of equals since
* we know we are have an array of ints
* this should reduce boxing/unboxing
* on our end at least.
*/
@SuppressWarnings("rawtypes")
public boolean equals(Object o) {
if (o == this){
return true;
}
if (!(o instanceof List)){
return false;
}
int currentOffset=0;
ListIterator e2 = ((List) o).listIterator();
while(currentOffset<array.length && e2.hasNext()) {
Object o2 = e2.next();
//will return false if o2 is null
if(!(o2 instanceof Integer)){
return false;
}
if(array[currentOffset] !=((Integer)o2).intValue()){
return false;
}
currentOffset++;
}
return !(currentOffset<array.length || e2.hasNext());
}
/**
* Optimization of hashcode since
* we know we have an array of ints.
*/
public int hashCode() {
return Arrays.hashCode(array);
}
}
А потом это просто
List<Integer> list = new IntArrayList(intArray);
Не в JDK прямо, нет. Это может быть реализация Guava. –
Guava - это библиотека. –