Fehlgeschlagene Public Test

  1. testBlyadflixGetterSetter(PublicTests)

java.lang.AssertionError: Blyadflix.getAbonnenten() does not return a LinkedList! expected: but was:

Soll ich mein Array List zu Linked List ändern?

Mein Code:

import java.util.ArrayList;

public class Blyadflix {
	private Server server;
	private ArrayList<Film> filme = new ArrayList<>();
	private ArrayList<Person> personen = new ArrayList<>();
	private ArrayList<Kunde> abonnenten = new ArrayList<>();

	public Blyadflix(Film film, Server server) {

	}

	public void filmHinzufuegen(Film film) {
		try {
			if (null != film && !this.filme.contains(film)) {
				this.getFilme().add(film);
			}
		} catch (Exception e) {

		}
	}

	public void addPerson(Person p) {
		if (null != p) {
			this.getPersonen().add(p);
		}
	}

	public void removePerson(Person p) {
		if (null != p) {
			this.getPersonen().remove(p);
		}
	}

	public Server getServer() {
		return server;
	}

	public void setServer(Server server) {
		this.server = server;
	}

	public ArrayList<Film> getFilme() {
		return filme;
	}

	public void setFilme(ArrayList<Film> filme) {
		this.filme = filme;
	}

	public ArrayList<Person> getPersonen() {
		return personen;
	}

	public void setPersonen(ArrayList<Person> personen) {
		this.personen = personen;
	}

	public ArrayList<Kunde> getAbonnenten() {
		return abonnenten;
	}

	public void setAbonnenten(ArrayList<Kunde> abonnenten) {
		this.abonnenten = abonnenten;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

Ich interpretiere das mal so, dass du Tests vorgegeben hast, die du nicht selbst anpassen darfst. Wenn ja, dann bleibt dir in der Tat nix anderes übrig als deine ArrayList in LinkedList zu ändern.

Das ist gleich auf zwei Ebenen doof:

  • Für das vernünftige Arbeiten des Codes spielt es keine Rolle, welche Liste du verwendest. Und für Anwender deines Codes ist der exakte Listentyp normalerweise auch unerheblich. Deshalb sollten die Tests eigentlich so geschrieben sein, dass sie jede List akzeptieren
  • LinkedList ist eine ausgesprochen schlechte Wahl, wenn man sie als normale Feld-Wald-und-Wiesen-Liste verwenden will. Da ist ArrayList in fast allen Anwendungsbereichen schneller. (Etwas offtopic: Der einzig mir bekannte Grund, in der Praxis LinkedList zu verwenden ist, wenn man das Deque oder Queue-Interface nutzen will, was ArrayList nicht anbietet)
1 „Gefällt mir“

Ja ich habe diesen Public Test vorbekommen. Das Problem ist dass bei von 22 test noch 10 falsch sind :upside_down_face:. Ich weiß auch fast gar nicht wie ich es noch verbessern muss.
Z:B steht hier :

testFilmHinzufuegen(PublicTests)
java.lang.AssertionError: expected:<[Film@2d6a9952, Film@22a71081]> but was:<[Film@22a71081]>

oder

testAddRemovePerson(PublicTests)
java.lang.AssertionError: expected:Blyadflix@31b7dea0 but was:

Was wollen diese Menschen von mir?

Beim ersten Test wird der neue Film anscheinend nicht geadded.

Wenn die vorgegebenen Test gut wären würden diese Dir das ziemlich genau sagen…
;o)

bye
TT

java.util.ArrayDeque :wink: (Soll noch einen Tick schneller sein als eine LinkedList, wenn man die LinkedList nur genau dafür verwendet)