Collections.binarySearch(LinkedList): cannot find method

  • Themenstarter Gelöschtes Mitglied 28785
  • Beginndatum
G

Gelöschtes Mitglied 28785

Gast
Hallo allerseits, ich handiere nun schon seit 2 Tagen mit meiner Collection (LinkedList) herum und habe es mitlerweile sogar soweit gebracht, dass der Compiler bei der Collections.sort -Funktion nicht mehr herummotzt ...

Leider bekomme ich jedoch die Fehlermeldung bei Collections.binarySearch() einfach nicht weg.
Es wäre wirklich toll, wenn ihr euch das mal ansehen könntet und mir einen Tip geben könntet :-/

Java:
import java.util.LinkedList;
import java.util.Iterator;
import java.util.Collections;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Comparator;

public class HalloBibliothek {

   public static void main(String[] args) {

   // Erzeugung eines Bibliothek-Objektes
    Bibliothek bibo = new Bibliothek();

   // Erzeugung von zwei Buch-Objekten
	Buch buch1 = new Buch("1000", "Dr. H.", "UML");
	Buch buch2 = new Buch("1001", "Mrs. L.", "Java2");

   // Nachricht an die Bibliothek, dass die Buecher aufgenommen werden sollen
	bibo.sortiertesEinfuegen(buch1);
	bibo.sortiertesEinfuegen(buch2);
	
	// Vorschau 1
	System.out.println("\nContent of LinkedList:\n");
	for( Iterator i = bibo.meineBuecher.iterator(); i.hasNext(); )
	System.out.println(i.next());
	
	// Liste sortieren
	Collections.sort (bibo.meineBuecher,new Vergleich());

    // Suche
    System.out.println("Searching for UML ...");
    int i2 = Collections.binarySearch(bibo.meineBuecher, "UML", new Vergleich());

    if (i2 >= 0) {
      System.out.println("Found at index " + i2);
      System.out.println("Object is " + bibo.meineBuecher.get(i2));
    }

    // Search for element in list
    //int index = Collections.binarySearch(bibo.meineBuecher, "Java2");
    //System.out.println("Found Java2 @ " + index);

    // Search for element not in list
    //index = Collections.binarySearch(bibo.meineBuecher, "J");
    //System.out.println("Didn't find J @ " + index);
	
	// Vorschau 2
	System.out.println("\nContent of LinkedList:\n");
	for( Iterator i = bibo.meineBuecher.iterator(); i.hasNext(); )
	System.out.println(i.next());

   }

}

Die Fehlermeldung die der Compiler immer wieder ausgibt ist:

HalloBib.java:35: cannot find symbol
symbol: method binarySearch(java.util.LinkedList(Buch), java.lang.String,Vergleich)
location: class java.util.Collections
 
H

hexx

Gast
Hallo,

in deinem Quellcode fehlen die Definitionen der Collection (meineBuecher) und des Comparators (Vergleich). So kann man leider nicht genau sehen, was falsch ist. Vielleicht hilft ja schon dieses (unvollständige) Beispiel:

Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {
 
    private static class Book {
    }

    private static class BookComparator implements Comparator<Book> {
        public int compare(Book b1, Book b2) {
            return 0;
        }
    }

    public static void main(String[] args) {

        List<Book> books = new ArrayList<Book>();
        Collections.binarySearch(books, new Book(), new BookComparator());
    }
}
 
G

Gelöschtes Mitglied 28785

Gast
in deinem Quellcode fehlen die Definitionen der Collection (meineBuecher) und des Comparators (Vergleich).

hier die zwei Ausschnitte:

Java:
import java.util.Collections;
import java.util.LinkedList;

public class Bibliothek {

	public LinkedList<Buch> meineBuecher;

    public Bibliothek() {
		meineBuecher = new LinkedList<Buch>();
		System.out.println("Hallo, ich bin eine Bibliothek, die 10 Buecher aufnehmen kann!");
    }

    public boolean sortiertesEinfuegen(Buch neuesBuch) {
        System.out.println("Ich habe das Buch " + neuesBuch + " aufgenommen!");
		meineBuecher.addFirst(neuesBuch);
		//meineBuecher.sort();
		return true;
    }
	
	public Buch sucheNachISBN(String isbn) {
		Buch book = new Buch("1234");
		//int i = meineBuecher.binarySearch(meineBuecher, book);
		return book;
	}
	/*
	public Collection sucheNachAutor(String autor) {
		Collection list = new Collection();
		return list;
	}*/
	
}

Java:
public class Vergleich implements java.util.Comparator<Buch>{

  public int compare(Buch b1,Buch b2){
    return b1.compareTo(b2);
  }
  
}

Ich könnte anhand deines Beispielcodes keinen Unterschied zu meinem finden ... außer dass ich LinkedList benutze ... Oder geht binarySearch etwa nicht mit LinkedList's?

Weil so eine Liste stell ich mir ja eher linear vor, binär klingt eher nach einem Baum ... ??
 
H

hexx

Gast
Binary Search hat nichts mit Bäumen zu tun. Das ist einfach der Name eines Suchalgorithmus (Binäre Suche ? Wikipedia).

Die Methode hat ja folgende Signatur:

Java:
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

erwartet also Parameter vom (im weitesten Sinne) gleichen Typs (Liste mit Büchern, Buch das gesucht wird, Buch-Vergleicher). Du übergibst aber als zweiten Parameter einen String. Deswegen der Fehler. Wenn du ein Buch nach Namen finden willst kann das etwa so aussehen:

Java:
public class BookNameComparator implements Comparator<Book> {
    public int compare(Book b1, Book b2) {
        return b1.getName().compareTo(b2.getName());
    }
}

...

Collections.binarySearch(books, new Book("UML"), new BookComparator());
 
G

Gelöschtes Mitglied 28785

Gast
erwartet also Parameter vom (im weitesten Sinne) gleichen Typs (Liste mit Büchern, Buch das gesucht wird, Buch-Vergleicher). Du übergibst aber als zweiten Parameter einen String. Deswegen der Fehler.

Ohh man, besten Danke für den Hinweis !!
Beschäftige mich leider noch nicht so lange mit Java und tu mir daher noch teils etwas schwer die Javadoc zu verstehen ...

Schönen Abend noch!
 

Lumaraf

Bekanntes Mitglied
Eine LinkedList ist für eine binäre Suche btw ungeignet weil der Zugriff auf ein Element anhand des Indizes nicht sehr effizient ist. Laut Doku nutzt die binarySearch Methode in dem Fall dann auch eine lineare Suche.

Für mich klingt das eher nach einem Anwendungsfall für eine HashMap oder auch eine TreeMap wenn die Einträge unbedingt sortiert sein müßen.
 
G

Gelöschtes Mitglied 28785

Gast
Hallo Lumaraf,

danke für die Info ...
Es handelt sich nicht um einen konkreten Anwendungsfall sondern lediglich um eine Übungsaufgabe zum Lernen :-/

Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Sortierung in collections testen Java Basics - Anfänger-Themen 11
X Collections.sort als Lambda Java Basics - Anfänger-Themen 14
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
B Collections.sort mit zwei Bedingungen? Java Basics - Anfänger-Themen 4
I Collections.shuffle funktioniert nicht Java Basics - Anfänger-Themen 1
M Collections Frage Java Basics - Anfänger-Themen 1
D Methoden Collections.shuffle mit bestimmtem Startwert? Java Basics - Anfänger-Themen 8
T Java Collections Java Basics - Anfänger-Themen 58
X Collections Collections Maps Frage Java Basics - Anfänger-Themen 4
C Collections: private Map Java Basics - Anfänger-Themen 4
V Collections Java Basics - Anfänger-Themen 3
A Collections Java Basics - Anfänger-Themen 2
P collections.sort Java Basics - Anfänger-Themen 2
R Iterationsreihenfolge über Collections Java Basics - Anfänger-Themen 4
S Klassen Collections Java Basics - Anfänger-Themen 10
J Polymorphie Iteratoren statt Collections Java Basics - Anfänger-Themen 13
H Etwas wie sort() / sorted() in JAVA-Collections? Java Basics - Anfänger-Themen 5
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6
S Bestimmte Objekte aus Collections anwählen/herausbekommen Java Basics - Anfänger-Themen 8
M Collections mit >2 type Parametern? Java Basics - Anfänger-Themen 8
S Frage zu Collections.frequency() Java Basics - Anfänger-Themen 3
T Collections Übersicht Collections Java Basics - Anfänger-Themen 4
X Collections Inhalt von zwei Collections prüfen Java Basics - Anfänger-Themen 4
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
K Telefonbuch Implementation mit Java Collections Java Basics - Anfänger-Themen 4
S Collections Sortieren von 3 Collections nach "einer Sortierung" Java Basics - Anfänger-Themen 3
T Kleine Frage zu Collections Java Basics - Anfänger-Themen 3
A Collections und ArrayList Java Basics - Anfänger-Themen 2
S Klasse Mit Collections Java Basics - Anfänger-Themen 32
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
K Aufgabe Collections Java Basics - Anfänger-Themen 2
D Collections - subList erstellen Java Basics - Anfänger-Themen 4
S Frage zu Enumerator der trad.Collections Java Basics - Anfänger-Themen 8
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
Dit_ Collections.sort(..); | Anwendung Java Basics - Anfänger-Themen 4
T array erweitern/flexible ohne collections usw. Java Basics - Anfänger-Themen 3
S Collections Java Basics - Anfänger-Themen 13
M Collections{Liste aus Objekten erzeugen] Java Basics - Anfänger-Themen 19
S generics und Collections#unmodifiableList Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
N Collections Sort ArrayList<> Java Basics - Anfänger-Themen 7
N Suche Infos zu Maps - Collections Java Basics - Anfänger-Themen 4
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
Zed Collections? ArrayList, Vector. Java Basics - Anfänger-Themen 2
M Collections kopieren (ArrayList<Point>) Java Basics - Anfänger-Themen 3
T Fragen zu Collections Java Basics - Anfänger-Themen 2
J Collections "schachteln" Java Basics - Anfänger-Themen 5
ff Java Collections Java Basics - Anfänger-Themen 4
H Collections Frameworks Java Basics - Anfänger-Themen 38
T Object Collections durchsuchen und nutzen Java Basics - Anfänger-Themen 6
S Mit Collections elemente sammeln Java Basics - Anfänger-Themen 7
D Collections.sort() frage Java Basics - Anfänger-Themen 6
G Java Collections Framework : id + 5 Werte , gibt es sowas Java Basics - Anfänger-Themen 4
frau-u Collections und Interfaces Java Basics - Anfänger-Themen 2
1 Erste Schritte binarySearch Java Basics - Anfänger-Themen 2
syfer Arrays.binarySearch Problem Java Basics - Anfänger-Themen 4
J Erste Schritte binarySearch Java Basics - Anfänger-Themen 3
B BinarySearch langsamer als LinearSearch? kann nicht sein Java Basics - Anfänger-Themen 8
H binarySearch Java Basics - Anfänger-Themen 5
H Problem mit Arrays.binarySearch() Java Basics - Anfänger-Themen 4
R binarySearch Java Basics - Anfänger-Themen 2
A LinkedList implementieren Java Basics - Anfänger-Themen 32
M Wie kann ich den Index i von einer LinkedList überprüfen? Java Basics - Anfänger-Themen 36
Düsseldorf2002 Datentypen Verschachtelte LinkedList Java Basics - Anfänger-Themen 5
Düsseldorf2002 Datentypen Zwei dimensionale LinkedList Java Basics - Anfänger-Themen 8
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
G Java LinkedList remove Methode Java Basics - Anfänger-Themen 5
G Java LinkedList Java Basics - Anfänger-Themen 6
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
S Eigene LinkedList Klasse Java Basics - Anfänger-Themen 4
S Mit einer LinkedList vorwärts und rückwärts iterieren Java Basics - Anfänger-Themen 6
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
G Java LinkedList Java Basics - Anfänger-Themen 3
B LinkedList add-Methode Java Basics - Anfänger-Themen 10
F Windows in LinkedList registrieren Java Basics - Anfänger-Themen 3
A Hilfe, LinkedList Java Basics - Anfänger-Themen 2
H Knoten-Reihenfolge einer LinkedList invertieren Java Basics - Anfänger-Themen 11
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
P Quellcode LinkedList Java Basics - Anfänger-Themen 2
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Hilfe bei verknüpfter Liste - Linkedlist Java Basics - Anfänger-Themen 11
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
C ArrayList vs LinkedList vs ? Java Basics - Anfänger-Themen 15
C LinkedList vs. ArrayList Java Basics - Anfänger-Themen 15
O LinkedList zu ArrayList Java Basics - Anfänger-Themen 4
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
L Problem mit LinkedList Java Basics - Anfänger-Themen 3
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
TechGirl LinkedList - kurze allgemeine Frage Java Basics - Anfänger-Themen 17
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
S LinkedList mit Input vergleichen. Java Basics - Anfänger-Themen 5
C Bei der LinkedList auf Palindrom überprüfen Java Basics - Anfänger-Themen 4
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben