7

私のアプリケーションでは、ArrayListofIntegerオブジェクトをArrayListofオブジェクトに変換したいと考えていLongます。出来ますか?

4

3 に答える 3

12

1ライナーではありません。

List<Integer> ints = Arrays.asList(1,2,3,4,5,6,7,8,9);
int nInts = ints.size();
List<Long> longs = new ArrayList<Long>(nInts);
for (int i=0;i<nInts;++i) {
    longs.add(ints.get(i).longValue());
}

// または、Java 8 でラムダ式を使用できます

List<Integer> ints = Arrays.asList(1,2,3,4,5,6,7,8,9);
List<Long> longs = ints.stream()
        .mapToLong(Integer::longValue)
        .boxed().collect(Collectors.toList());
于 2013-03-18T18:26:54.150 に答える
6

いいえ、できません。ジェネリックはポリモーフィックでArrayList<Integer>はないためです。つまり、 は のサブタイプではないArrayList<Long>ため、キャストは失敗します。したがって、唯一の方法は、あなたを反復してList<Integer>に追加することですList<Long>

List<Long> longList = new ArrayList<Long>();
for(Integer i: intList){
longList.add(i.longValue());
}
于 2013-03-18T18:22:01.103 に答える
0
ArrayList<Long> longList = new ArrayList<Long>();

Iterator<Integer> it = intList.iterator();
while(it.hasNext())
{
    Integer obj = it.next();
    longList.add(obj); //will automatically convert Int to Long
}

終わり....

于 2013-03-18T18:26:28.550 に答える