Werte einer LinkedList mit einer Zahl vergleichen?
Hallo zusammen!
Ich habe eine Frage und zwar wie kann ich einen Wert, welcher mir übergeben wird mit den Werten einer LinkedList vergleichen?
Ich frage dies, da ich eine split Methode implementieren soll in einer Übungsaufgabe, welche den int zahl mit den Werten vergleicht und dabei alle Werte, welche grösser sind in eine neue LinkedList packt.
Damit ihr euch das etwas genauer vorstellen könnt, habe ich hier den bisherigen code:
Beispiel: zahl(5)
LinkedList (1, 3, 8, 12, 17)
Ich dachte mir nun, ich gehe mit einer Schleife durch die Werte durch und vergleiche diese. Ist der Wert aus der LinkedList grösser als der int zahl, wird dieser in eine neue LinkedList Resultat gepackt (sprich 8, 12, 17). Nur wie mache ich das? Sprich wie vergleiche ich die Werte und wie packe ich die grösseren Werte in eine neue Liste?
SpecialLinkedIntList split(int zahl) {
boolean less = true;
boolean greater = true;
if (first == null)
return null;
while (first != null)
for (int index = 0; zahl > first (); index ++) {
Könnt ihr mir da vielleicht paar Tipps dazu geben? Bin noch ziemlicher Anfänger...
Grüsse!!!
2 Antworten
Ich würde es spontan so machen:
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
//gibt zahlen aus
System.out.println(split(15) + "");
}
private static LinkedList<Integer> split(int zahl)
{
//linked list für zahlen die GRÖSSER als eingegebene sind
LinkedList<Integer> greater = new LinkedList<>();
//linked list für zahlen die KLEINER als eingegebene sind
LinkedList<Integer> less = new LinkedList<>();
//loopt bis z.B 25
for(int i = 0; i < 25; i++)
{
//wenn die eingegebene Zahl größer als i ist -> I kleiner -> i zur less linked list hinzufügen
if(zahl > i)
{
less.add(i);
}
//wenn die eingegebene Zahl kleiner als i ist -> I größer-> i zur greaterlinked list hinzufügen
if(zahl < i)
{
greater.add(i);
}
}
//hier habe ich jetzt einfach mal die linkedlist mit den höheren Zahlen
als der eingegebenen zurückgegeben.
return greater;
}
}
HeyHo!
Wie ich sehe, printest du die Werte immer mit ", " + value aus.
Das heißt du erhälst am ende einen String der ungefähr so aussieht:
[4, 2, 1, 3, 5], richtig?
Ich hab mir einfach mal eine String Variable "test" angelegt, die so aussieht, nicht wundern.
Wenn das der fall ist, dann dürfte das für dich funktionieren:
//du entfernst die [] mit den replace befehlen und splittest den String
//wenn ein ", " auftaucht. Heißt du erhälst nun eine Array, welche die Länge der Liste enthält.
String[] splitted = test.replace("[", "").replace("]", "").split(", ");
//dann einfach die length der splitted list ausgeben
System.out.println(splitted.length);
Sollte ich irgendwas falsch verstanden haben, einfach korrigieren! :D
Mit freundlichen Grüßen
Eric
public static void main(String[] args) {
List<Integer> list = new LinkedList<>(Arrays.asList(1, 3, 8, 12, 17));
split(list, 5).forEach(System.out::println);
}
public static List<Integer> split(List<Integer> list, int zahl) {
return list.stream().filter(i -> i > zahl).collect(Collectors.toList());
}
Ausgabe:
8
12
17
Vielen Dank für deine Antwort!!! Sie hat mir echt mega weiter geholfen!!!
Ohhh das hilft mir sehr viel weiter!!! Vielen Dank!!! Nur wie weiss ich wie lange meine LinkedList ist? Ich erhalten jeglich folgende Informationen vor der split Methode:
Nach der split Methode: