Liste

rokko123

Mitglied
Hey,

Java:
package;

import java.util.NoSuchElementException;
import list.List;

public class Lists {	
	/**
	 * Returns a string representation of the list.
	 * 
	 * @return a comma-separated list of the list values
	 */
	public static String toString(List list)
	{
		if (list == null) return "null";
		
		StringBuffer buf = new StringBuffer();
		buf.append(list.value).append(", ").append(toString(list.next));
		return buf.toString();
	}
	
	/**
	 * Adds a value to at the beginning of a list.
	 * 
	 * @param list the list to which the value is added
	 * @param value the value which is added to the list
	 * @return a new list with the new element first followed by the given list
	 */
	public static List add(List list, int value)
	{
		int i;
		for (i=0; i<=20; i++){
		list.add(i);
		return list;
		}
	}

Ich soll für eine Liste die add methode machen, "public List add(List list, int value)" ist vorgegeben, aber ich finde einfach nirgends was add(List list, zu bedeuten hat. Bis jetzt dachte ich bei add wird zuerst angegeben wo es eingefügt werden soll und dann was eingefügt werden soll, also z.b. int value

nur mit diesem List list komm ich auf keinen grünen Zweig, suche schon die ganze Zeit im Netz wie das zu verstehen ist, aber bin leider nicht fündig geworden... da hab ich mir gedacht schreib ichs mal hier hin, vielleicht kann hier einer einem mega-noob helfen und mir erklären was es mit List list auf sich hat ???:L
 
Zuletzt bearbeitet:
S

SlaterB

Gast
die Doku
> Adds a value to at the beginning of a list.
+
> @param list the list to which the value is added
+
> @param value the value which is added to the list
+
> @return a new list with the new element first followed by the given list

sagt dir rein gar nichts? das erklärt doch im Gegenteil alles genauestens, jedenfalls was rauskommen soll,
besonders wenn man noch dazu weiß, dass es eine verkettete Liste ist, erwähnst du nicht gerade ausführlich,
kommt mir aber irgendwie alles bekannt vor, erkennt man auch an der toString()-Methode

du musst einen neuen Listen-Kopf erstellen, darin der Value, und die Rest-Liste, der übergebene Parameter, hinten dran,

mit einer Schleife und
> list.add(i);
hat das wohl wenig zu tun
 

rokko123

Mitglied
was ich machen soll ist mir schon klar, aber die umsetzung ist dann nochmal was ganz anderes :)

Finde irgendwie auch keine wirklich gute Beschreibung von dem Thema, mag aber dran liegen, dass mir wohl noch bisschen Grundwissen fehlt über Klassen/Methoden und ich da ein grausames durcheinander fabriziere.

Habs heute versucht, aber Eclipse wirft nur mit roten Linien um sich, wird wohl noch was dauern :oops:
 

njans

Top Contributor
Okay, also was du machen sollst ist:
- Nehme eine alte Liste entgegen
- Nehme einen Wert entgegen
- Erstelle eine neue (new verwenden) Liste
- füge dieser den Wert an erster Stelle ein
- füge anschließend die Elemente der alten Liste in die neue Liste ein

Da bleiben aber noch fragen: List ist dann sicher das Interface [JAPI]List[/JAPI]. Demnach kannst du auch [JAPI]LinkedList[/JAPI] oder [JAPI]ArrayList[/JAPI], als neue Liste nehmen.

Wenn du da nun eine LinkedList nimmst, dann kannst du ganz einfach addFirst() verwenden um einen Wert an die erste Stelle zu bekommen :)
 

rokko123

Mitglied
Java:
package list;

/**
 * Linked list with int values.
 * 
 * The empty list is represented by a null reference.
 */
public class List {
	public int value;
	public List next;

	/**
	 * Creates a new list
	 * 
	 * @param value value of the head of the list
	 * @param next reference to rest of the list; may be null
	 */
	public List(int value, List next) 
	{
		this.value = value;
		this.next = next;
	}	
}

Des is ja das was am Anfang importiert wird, aber wenn ich dann in der andern Datei versuch mit new List(); eine neue Liste zu erstellen, dann sagt mir eclipse, dass der Konstruktor List() nicht definiert sei, doch da ists doch definiert mit public List(int value, List next)?

Edit:

Java:
                List list2 = new List(0,null);
		list2 = Lists.add(list, 1);
		
		return list2;

Jetzt hab ich das so, die neue Liste besteht da ja nur aus Kopf und Ende, und next würde dann ja auf null zeigen, aber ob das mit der 0 stimmt bin ich mir nicht ganz sicher, ich versuchs jetzt mal so weiterzukommen, List(); war wohl undefiniert weil da nicht drinstand, was drinstehen sollte, ne?^^

ich stell mich auch blöd an, aber jeder fängt mal klein an :(


Edit:

Und jetzt fabrizier ich nen StackOverflowError

Java:
	List list2 = new List(0 ,null);
		List list3 = new List(0, null);
		list2 = Lists.add(list, 1);
		list3 = Lists.add(list2, 2);
		
		
		
		return list3;

bzw brauch ich da überhaupt list2 und list3 explizit anzugeben, das soll ja ne Methode werden fällt mir grad auf, die sollte dann ja auch auf andere listen anwendbar sein, so würds mir wohl den Junit test sowieso nicht bestehen -.-
 
Zuletzt bearbeitet:
S

SlaterB

Gast
besteht eine Frage? klingt ja alles sehr wirr,
man kann wenig wissen aber sollte doch zumindest Postings übersichtlich schreiben,
geht es um die add-Methode am Anfang?
was planst du bzw. wurde ja auch schon gesagt, welcher Code gehört zu welchem Gedanken?
 

Landei

Top Contributor
So wie List hier definiert ist, kannst du niemals eine leere Liste haben, das ist schonmal doof.

Wie dem auch sei, [c]add[/c] kann man so scheiben:

Java:
public static List add(List list, int value) {
   return new List(value, list);
}
 

rokko123

Mitglied
Glaub ich iwi fast nicht dass das mit so einem einzeiler gelöst werden kann, aber junit wird erfüllt :autsch:

und sry fürs unübersichtliche schreiben, werds in Zukunft versuchen besser zu machen
 
Zuletzt bearbeitet:

rokko123

Mitglied
Java:
	/**
	 * Retrieves the size of a list.
	 * 
	 * @param list the list in question
	 * @return the number of values in the list.
	 */
	public static int size(List list)
	{
		if (list == null){
			
			return 0;
		}else{
			return size(list);
		}

Wie krieg ich jetzt die grösse der Liste raus, wenn ich das so mach wie oben, dann krieg ich einen StackOverflowError, seh aber irgendwie den Grund nicht.

Erst schau ich, ob die liste leer ist und wenn sie das nicht ist, dann soll mir size(list); die anzahl werte der liste liefern

size() ist doch bei listen, wie bei Arrays array.length, das kann man doch normal ohne probs nutzen? :/
 

XHelp

Top Contributor
Du rufst die Methode jedes mal genau so auf, ohne die Parameter zu verändern.
Du möchtest vermutlich eher
Code:
size(list.next)
verwenden und auch überlegen was du mit dem Ergebnis noch anstellen musst.
 
G

Gast2

Gast
Du erzeugst dadurch ne Endlosschleife.

Wenn du das rekursiv lösen willst dann wäre folgendes denkbar:

Code:
int size (liste) : 
Wenn liste == null return 0;
Sonst return 1 + size(liste.next);
Damit navigierst du dann bis ans Ende der Liste und zählst jeweils immer eins hoch.
 

Landei

Top Contributor
Java:
public static int size(List list){
   return list == null ? 0 : 1 + size(list.next);
}
 

rokko123

Mitglied
Danke Danke :)

Das mit size() hat geklappt, die summe der Elemente hab ich auch hingekriegt

Java:
public static int sum(List list)
	{
		if (list == null){
			return 0;
		}else{
			return list.value + sum(list.next); 
		}
	}

grade sitz ich an ner möglichkeit das letzte Element auszugeben, mal schauen wies läuft :)
 

rokko123

Mitglied
Java:
private void checkLast(List list, String expected)
	{
		check(Lists.last(list), expected);
	}
	
	@Test
	public void last()
	{
		checkLast(null, "null");
		checkLast(create(1), "1, null");
		checkLast(create(1,2), "1, null");
		checkLast(create(1,2,3), "1, null");
	}

ich sollte ja das letzte element meiner Liste ausgeben, und dann sollte es diesen test bestehen, nur versteh ich das nicht.

wenn da create(1,2,3) steht, wie kann dann "1,null" als das letztes Element erwartet werden, müsste dann ja 3 sein? oO

Java:
public static List last(List list) 
    {
			if (list != null) {
			if (list.next == null){
			}
			return (list.next);
			} else { 
				return list;
			}

				
			}

So hat ich mir das gedacht, dass wenn list.next auf null zeigt, dass ich ja dann theoretisch am Ende der Liste sein müsste und dann list.next ausgeben könnte und sonst einfach die leere liste ausgebe, aber das erfüllt mir wie gesagt den Test nicht und da ich den Test nicht durchblicke, komm ich auch da nicht wirklich weiter
 
Zuletzt bearbeitet:
S

SlaterB

Gast
create ist eine hier im Forum unbekannte Methode, oder?
wenn man bedenkt, dass add() vorne anfügt, ist es nicht ganz unwahrscheinlich, dass der erste Wert 1 am Ende der letzte in der Liste ist,

dass die null immer noch dranhängen soll sieht in in der Tat komisch aus, aber was soll man dazu sagen?
du postest ja auch keine Aufgabenstellung oder irgendwelche Hinweise die man noch auswerten könnte

so wie es aussieht soll deine Methode dann entweder "null" oder den letzten Wert + ", null" hinten dran zurückgeben,
das umzusetzen sollte möglich sein
 

HimBromBeere

Top Contributor
Hab das mal sortiert:
Java:
if (list != null) {
	if (list.next == null)
	{
		
	}
	return (list.next);
} else { 
	return list;
}
Fällt dir was auf? Der else-Zweig scheint mir ziemlich sinnfrei, warum willst du eine Liste, die augenscheinlich
Code:
null
ist, zurückgeben. Abgesehen davon: ein leerer Codeblock sieht ziemlich doof aus, dreh das Ganze doch einfach um:
Java:
if (list.next != null) return list.next
Da stellt sich natürlich die Frage, was wird zurückgegeben, WENN
Code:
list.next == null
ist?
 

rokko123

Mitglied
Ich wollte die leere liste zurückgeben, weil das ja im junit-test verlangt ist, da wird ja auch auf null geprüft.


und wenn ich im Junit-test die 3 checks nach dem null-check auskommentiere, dann wird mir der test erfüllt, also der eine teil, mit der leeren liste scheint ja dann doch iwi zu funktionieren? oder seh ich da was falsch
 
S

SlaterB

Gast
> also der eine teil, mit der leeren liste scheint ja dann doch iwi zu funktionieren? oder seh ich da was falsch

scheint zu funktionieren, ja

die Richtung
> if (list.next != null) return list.next
kann sicherlich noch nicht das Ziel sein,
man muss erst die gesamte Liste durchsuchen und erst das letzte Element ist gut

wenn man noch die anfangs gepostete toString()-Methode bedenkt, dann kommt die Ausgabe mit ", null" doch gut hin oder?
hast du im ganzen Thread bisher noch keine Listen ausgegeben, bzw. die gepostete toString()-Methode genutzt?
JEDE Ausgabe endet anscheinend mit ", null", insofern der Test korrekt

du musst das letzte Listenelement als einzelne Liste zurückgeben
 
S

SlaterB

Gast
du gibst eine Liste zurück, die check-Methode nutzt anscheinend dann toString(),
klappt auch für null
 

rokko123

Mitglied
Java:
package list;

import org.junit.Assert;


import u5a1.Lists;

public class Tests {
	public void check(List list, String expected) 
	{ 
		Assert.assertEquals(expected, Lists.toString(list));	
	}
	
	public List create(int... values) 
	{
		List list = null;
		for (int i=0; i<values.length; i++) {
			list = Lists.add(list, values[i]);
		}
		return list;
	}
}

Jenau, da stehts ja sogar
 

rokko123

Mitglied
kann ich das auch irgendwie mit meiner size() methode machen? quasi dass mir das element an der stelle size(list)-1 angegeben wird?
weil ich komm einfach nicht weiter, entweder bekomm ich die ganze liste zurück oder ich krieg ne Fehlermeldung NullPointerException.

wie ich das mit list.next hinkriegen soll ist mir echt ein rätsel
 
S

SlaterB

Gast
mit Indexen zu arbeiten müsstest du wohl genauso implementieren wenn noch nix da ist, kannst du ja machen, aber spart nicht nichts,

poste doch deinen Code wenn es einen Fehler gibt, welch grundlegender Zusammenhang, an den immer wieder zu erinnern ist..

> wie ich das mit list.next hinkriegen soll ist mir echt ein rätsel

list.next liefert das nächste Element, damit zum Ende der Liste zu gelangen,
was du quasi schon in allen bisherigen Methoden genauso machst ist dir ein Rätsel?

oje, aber immerhin bringt die Aufgabe dann noch was (wenn auch vielleicht nicht für lange),
hab mich schon gewundert warum man hier 5x dasselbe machen soll..
 

rokko123

Mitglied
Java:
	public static List last(List list) 
    {
			   if (list == null)
				   return null;
			   if (list.next == null) 
				   return list;
			   
			   return last(list.next);
			}

mich hats einfach verwirrt weil ich mit list.next == null nicht ans ziel gekommen bin, obwohl das ja dann eigentlich am ende der Liste sein müsste
 
S

SlaterB

Gast
der Code dürfte doch stimmen, oder gibt es da nun die NullPointerException?
in jedem Posting für Klarheit sorgen, ein ehres Ziel
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Wie füge ich eine Liste so in eine andere Liste ein, dass der Index der Elemente derselbe bleibt? Java Basics - Anfänger-Themen 7
A Wort-Liste importieren Java Basics - Anfänger-Themen 11
G Liste schneller durchsuchen Java Basics - Anfänger-Themen 4
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
M Verkettete Liste Java Basics - Anfänger-Themen 1
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
K Warum ist die binäre Suche bei der verketteten Liste nicht so effektiv? Java Basics - Anfänger-Themen 3
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
thor_norsk Verkette Liste Java Basics - Anfänger-Themen 27
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B GUI extension mit einer Liste verbinden Java Basics - Anfänger-Themen 1
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
M Java Liste streamen Java Basics - Anfänger-Themen 10
AmsananKING Aussortierung einer Liste Java Basics - Anfänger-Themen 8
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
S Kann nicht auf die Liste zugreifen mit der Methode!? Java Basics - Anfänger-Themen 3
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
Gaudimagspam Linked Liste Java Basics - Anfänger-Themen 4
Z Liste umkehren Java Basics - Anfänger-Themen 1
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
P Verschachtelte Array Liste Java Basics - Anfänger-Themen 2
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
P Performance Array und Liste Java Basics - Anfänger-Themen 13
M QuickSort und Liste Java Basics - Anfänger-Themen 6
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
M Array liste Verdrehen Java Basics - Anfänger-Themen 8
A Verkettete Liste Java Basics - Anfänger-Themen 2
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
B Liste sortieren? Java Basics - Anfänger-Themen 4
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
O ADT Liste z. B. Java Basics - Anfänger-Themen 15
B sortierte Liste Java Basics - Anfänger-Themen 4
O Knoten und Liste verarbeitung Java Basics - Anfänger-Themen 20
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Einträge aus Tupeln nach Regeln in Liste speichern Java Basics - Anfänger-Themen 8
Queiser Liste zurückgeben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen


Oben