Suchalgorithmus

TheJonas

Mitglied
Hallo zusammen,
ich schreibe im Moment an einem Suchalgorithmus, der sowohl in einer Linked List als auch in einer Arraylist sucht, deshalb habe ich folgende Methode implementiert:
Java:
    public int search(List<Integer> list, int c) {
        Integer [] ilist = list.toArray(new Integer[list.size()]);
        for ( int i = 0; i < ilist.length; i++)
        {
            if    (ilist[I].equals(c)) {
                System.out.println("Position ist "+i);
                return i;
                }
        }
        System.out.println("Position nicht gefunden!");
        return -1;
    }
Problem ist allerdings hierbei, dass durch die Methode .toArray alles in ein Array umgewandelt wird oder täusche ich mich? Schließlich kommt bei der anschließenden Laufzeitmessung ein und die selbe Laufzeit bei erfolglosen suchen heraus...
 
Zuletzt bearbeitet von einem Moderator:

Blender3D

Top Contributor
int foundIndex = list.indexOf(c)
:) Genau..
ArrayList und LinkedList implementieren beide das Interface List. --> Benutze die Methoden dieses Interfaces, dann brauch man Umwandeln nicht. Das ist die Idee eines gemeinsamen Interfaces. ;)
Abgesehen vom obigen perfekten Tipp könnte man so etwas machen.
Java:
    public static int search(List<Integer> list, int c) {
        Iterator<Integer> it = list.iterator();
        int pos = 0;
        while (it.hasNext()) {
            if (it.next().equals(c)) {
                System.out.println("Position ist " + pos);
                return pos;
            }
            pos++;
        }
        System.out.println("Position nicht gefunden!");
        return -1;
    }
 

Ähnliche Java Themen

Neue Themen


Oben