String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune" };
Ho una semplice matrice di nomi di pianeta e voglio invertire ogni nome che è stato aggiunto alla matrice (non l'ordine di stringa).
mi continuano a lottare con la sintassi lambda:Espressione lambda per invertire una stringa - Java
Arrays.sort(planets, (first, second) -> new StringBuilder(first).reverse().toString());
System.out.println(Arrays.toString(planets));
Attualmente ottengo:
Multiple markers at this line
- The method
reverse()
in the typeStringBuilder
is not applicable for the arguments(String)
- Type mismatch: cannot convert from
String
toint
Risposta:
Grazie a tutti per i suggerimenti ... asList mi ha stretta. Non ho ancora ordinato correttamente.
Quindi ho bisogno di trovare un modo per far funzionare array.sort perché questo era il compito (prendere array.sort e lambda it).
Ho inviato un ping all'istruttore per chiedere chiarimenti qui, ma sto per scadere.
Ecco il mio lavoro cercando di tenere Array.sort
// lambda expression , long to short
System.out.println("5) Sorted by length (descending):");
Arrays.sort(planets, (first, second) -> second.length() - first.length());
System.out.println(Arrays.toString(planets));
// lambda expression , reverse the name , then sort in ascending order
// hint use new StringBuilder(first).reverse().toString() to reverse the string
System.out.println("6) Sorted in dictionary order of the reversed name (ascending)");
Arrays.sort(planets, (first, second) -> new StringBuilder(first).reverse().toString().compareTo(second));
System.out.println(Arrays.toString(planets));
// lambda expression , reverse the name , then sort in descending order
System.out.println("7) Sorted in dictionary order of the reversed name (descending)");
Arrays.sort(planets, (first, second) -> new StringBuilder(second).reverse().toString().compareTo(first));
System.out.println(Arrays.toString(planets));
Quello che non posso per la vita di me a capire è che tutte e 3 le espressioni me ottenere esattamente lo stesso risultato ... ciascuno di questi dà io l'array originale è stato ordinato dal più lungo al più breve.
Questo è il mio risultato:
5) In ordine di lunghezza (decrescente): [Nettuno, Mercurio, Giove, Urano, Saturno, Venere, Terra, Marte]
6) In ordine al fine dizionario del nome invertito (ascendente) [Nettuno, Mercurio, Giove, Urano, Saturno, Venere, Terra, Marte]
7) in ordine al fine dizionario del nome invertito (discendente) [Nettuno, Mercurio, Giove, Urano, Saturno, Venere, Terra, Marte]
Perché si sta chiamando 'Arrays.sort()'? –
Sto usando Arrays.sort() perché mi è stato chiesto di assegnare un compito a casa. –