2014-10-11 13 views
11

Obecnie uczę się korzystać z języka Java, a mój przyjaciel powiedział mi, że ten blok kodu można uprościć, gdy używa się języka Java 8. Zwrócił uwagę, że kod parseIntArray można uprościć. Jak zrobiłbyś to w Java 8?Jaki jest najprostszy sposób przekonwertowania tablicy String na tablicę int przy użyciu środowiska Java 8?

public class Solution { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String[] tokens = input.nextLine().split(" "); 
     int[] ints = parseIntArray(tokens); 
    } 

    static int[] parseIntArray(String[] arr) { 
     int[] ints = new int[arr.length]; 
     for (int i = 0; i < ints.length; i++) { 
      ints[i] = Integer.parseInt(arr[i]); 
     } 
     return ints; 
    } 
} 

Odpowiedz

30

Na przykład:

static int[] parseIntArray(String[] arr) { 
    return Stream.of(arr).mapToInt(Integer::parseInt).toArray(); 
} 

Wez Stream z String[]. Użyj , aby wywołać Integer.parseInt dla każdego elementu i przekonwertować na int. Następnie po prostu wywołaj toArray na wypadkowej IntStream, aby zwrócić tablicę.

+0

Wow! Czy to java? Z pewnością jest to bardziej uporządkowane niż moje rozwiązanie. Dziękuję za szybką reakcję! –

+1

@IrvinDenzelTorcuato Java 8, tak. –

+0

'Integer :: parseInt' co' :: 'tutaj działa? –

18

można pominąć tworzenia token String[] tablicy:

Pattern.compile(" ") 
     .splitAsStream(input.nextLine()).mapToInt(Integer::parseInt).toArray(); 

Wynikiem Pattern.compile(" ") może być zapamiętany i użyć ponownie, oczywiście.

+3

Wow, sprytny. Nie wiedział "splitAsStream". –

1

Możesz, także uzyskać tablicę bezpośrednio od rozłamu:

String input; //Obtained somewhere 
... 
int[] result = Arrays.stream(input.split(" ")) 
     .mapToInt(Integer::valueOf) 
     .toArray(); 

Tutaj Arrays posiada kilka metod, aby uzyskać strumień z tablicy, dzięki czemu można podzielić go bezpośrednio w zaproszeniu. Następnie wywołaj mapToInt z Integer::valueOf, aby uzyskać IntStream i toArray dla wybranej tablicy int.

Powiązane problemy