2013-03-18 3 views
0

В моем приложении я хочу преобразовать ArrayList из Integer объектов в ArrayList из Long объектов. Является ли это возможным?Можно ли преобразовать ArrayList <Integer> в ArrayList <Long>?

+0

Вы не можете сделать это напрямую. Возможно, этот пост может вам помочь: http://stackoverflow.com/questions/6690745/converting-integer-to-long – MikO

+0

Зачем вам это нужно? – Suranga

+0

Ohhhh guyes. Почему вы голосуете по этому вопросу? –

ответ

6

Не в 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()); 
} 
+0

Блестящий !!! Я не смог преобразовать его без вашего ответа! Большое спасибо! –

2

Нет, вы не можете, потому что, generics не являются полиморфными.I.e., ArrayList<Integer> не является подтипом ArrayList<Long>, таким образом, приведение не получится. Таким образом, единственный способ - перевести через List<Integer> и добавить его в List<Long>.

List<Long> longList = new ArrayList<Long>(); 
for(Integer i: intList){ 
longList.add(i.longValue()); 
} 
+0

Спасибо! Но это не работает! –

+0

Извините! теперь я выбрал правильный ответ –

0

См. here для примера, относящегося к преобразованию списков. Конечно, это возможно.

+1

Оператор должен был подумать над этим, но если его можно преобразовать Integer -> Long, его можно преобразовать из списка. – Nix

+1

@ LearnedfromMistake, вы не можете * нарисовать * два. Вы можете, однако, разобрать Integer из String в Long, как указано в MikO в комментарии к вопросу. И я знаю, что эта ссылка не совсем то, о чем попросил ОП, но если он нашел время для Google, что он искал, он найдет ответ. – rbedger

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 
} 

Готово ....

Смежные вопросы