2015-05-02 17 views
5

In Python dürfen Sie negative Array-Indizes verwenden, um von der rechten Seite eines Arrays ausgehend zu zählen. Zum Beispiel ist Array [-1] das letzte Element und Array [-2] ist das vorletzte Element im Array. Wie würdest du das in Java machen?Wie implementiert man negative Indizes in Java?

+1

Es ist jetzt einfacher zu verstehen, was gefragt wird. Könnte jemand diese Frage bitte erneut beantworten? –

+1

Natürlich können Sie Ihr eigenes Objekt erstellen. Aber es wird eine Methode wie PythonArray.getElement (int elementIndex) haben – borjab

Antwort

19

Java unterstützt keine negativen Indizes, die letzte Zelle zuzugreifen, Sie

array[array.length-1] = lastElement; 
3

Java Index Index beginnt mit 0. Kein negativer Index verwendet werden kann, verwendet werden soll. Falls überhaupt verwendet, wird Java den Array-Index außerhalb der Grenzen der Exception werfen.

2

Um so etwas wie dies umzusetzen, würden Sie eine kreisförmige, doppelt verknüpfte Liste erstellen müssen ... ich dies nicht kompilieren und testen, aber dies ist die allgemeine Idee ...

public class LinkedList { 
    Integer node; 
    LinkedList next; 
    LinkedList prev; 
    public LinkList(Integer node) { 
     this.node = node; 
     this.next = this; 
     this.prev = this; 
    } 
    public void insert(Integer node) { 
     if(this.node == null) { 
      this.node = node; 
      this.next = this; 
      this.prev = this; 
     } 
     else if(this.next == null) { 
      this.next = new LinkedList(node); 
      this.prev = node 
      this.next.prev = this; 
      this.next.next = this; 
     } 
     else { 
      this.next(node, this); 
     } 
    } 
    private void insert(Integer node, LinkedList head) { 
     if(this.next == null) { 
      this.next = new LinkedList(node); 
      this.next.prev = this; 
      this.next.next = head; 
     } 
     else { 
      this.next(node, head); 
     } 
    } 
    public Interger get(int index) { 
     int cursor = 0; 
     if(index == cursor) { 
      return this.node; 
     } 
     else if(index < cursor) { 
      return this.prev.get(index, cursor-1); 
     } 
     else { 
      return this.next.get(index, cursor+1); 
     } 
    } 
    private Interger get(int index, int cursor) { 
     if(index == cursor) { 
      return this.node; 
     } 
     else if(index < cursor) { 
      return this.prev.get(index, cursor-1); 
     } 
     else { 
      return this.next.get(index, cursor+1); 
     } 
    } 
} 
public static void main(String[] args) { 
    LinkedList list = new LinkedList(new Integer(1)); 
    list.insert(new Integer(2)); 
    list.insert(new Integer(3)); 
    System.out.println(list.get(-1).toString()); 
} 
Verwandte Themen