2017-11-29 3 views
4

Ich habe eine Methode, die eine Liste von Ganzzahl als Parameter akzeptiert. Im Moment habe ich eine Liste von langen und will es auf eine Liste von Integer zu konvertieren, so schrieb ich:eine Liste von Long in eine Liste von Int Java konvertieren 8

List<Integer> student = 
    studentLong.stream() 
    .map(Integer::valueOf) 
    .collect(Collectors.toList()); 

Aber ich erhielt einen Fehler:

method "valueOf" can not be resolved. 

Ist es tatsächlich möglich, eine Liste zu konvertieren von Long zu einer Liste von Integer?

+0

'studentLong.stream() mapToInt (Long :: intValue) .boxed() sammeln (Collectors.toList ()) ' – alfasin

+0

Denken Sie daran, dass die Map-Funktion in Ihrem Fall immer das lange Objekt aus dem Stream erhält, daher rufen Sie intValue of Long auf, wie oben von @alfasin kommentiert. – BharaniK

+0

Es funktioniert jetzt. Möchten Sie Ihre Lösung unten schreiben, damit ich sie als Antwort akzeptieren kann? – user3369592

Antwort

2

Sie sollten eine mapToInt mit Long::intValue verwenden, um die int Wert zu extrahieren:

List<Integer> student = studentLong.stream() 
      .mapToInt(Long::intValue) 
      .boxed() 
      .collec‌t(Collectors.toList(‌​)) 

Der Grund, warum Sie method "valueOf" can not be resolved. ist immer sind, weil es keine Unterschrift von Integer::valueOf die Long als Argument akzeptiert ist.

EDIT
Per unten Holger Kommentar können wir auch tun:..

List<Integer> student = studentLong.stream() 
      .map(Long::intValue) 
      .collec‌t(Collectors.toList(‌​)) 
+4

Anstelle von '.mapToInt (Long :: intValue) .boxed()' können Sie einfach '.map (Long :: intValue)' 'verwenden. – Holger

+0

Danke @Holger Ich werde es zur Antwort hinzufügen! – alfasin

Verwandte Themen