7

In my application I want to convert an ArrayList of Integer objects into an ArrayList of Long objects. Is it possible?

Leigh
  • 28,605
  • 10
  • 52
  • 98
Shajeel Afzal
  • 5,744
  • 5
  • 41
  • 68
  • You can't do it directly. Maybe this post could help you: http://stackoverflow.com/questions/6690745/converting-integer-to-long – MikO Mar 18 '13 at 18:23
  • Ohhhh guyes. Why are you voting down this question? – Shajeel Afzal Mar 18 '13 at 18:25
  • It's not clear what you are exactly asking. You have to demonstrate it with some code. – Bhesh Gurung Mar 18 '13 at 18:26
  • The question is pretty clear, however it does not demonstrate any effort. With common questions such as this, you will typically get less down votes if you include *what* you have tried - and the results. – Leigh Mar 18 '13 at 18:27

3 Answers3

12

Not in a 1 liner.

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());
}

// Or you can use Lambda expression in 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());
lagivan
  • 2,549
  • 20
  • 28
Tom
  • 41,437
  • 4
  • 36
  • 60
6

No, you can't because, generics are not polymorphic.I.e., ArrayList<Integer> is not a subtype of ArrayList<Long>, thus the cast will fail. Thus, the only way is to Iterate over your List<Integer> and add it in List<Long>.

List<Long> longList = new ArrayList<Long>();
for(Integer i: intList){
longList.add(i.longValue());
}
PermGenError
  • 45,111
  • 8
  • 85
  • 106
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
}

Done....

VishalDevgire
  • 4,032
  • 10
  • 30
  • 57