2015-05-02 12 views
5

Trong Python, bạn được phép sử dụng chỉ mục mảng âm để đếm bắt đầu từ phía bên phải của mảng. Ví dụ, mảng [-1] là phần tử cuối cùng và mảng [-2] là phần tử cuối cùng thứ hai trong mảng. Làm thế nào bạn sẽ làm điều này trong Java?Làm thế nào để thực hiện các chỉ mục tiêu cực trong java?

+1

Bây giờ nó dễ hiểu hơn những gì đang được hỏi. Ai đó có thể mở lại câu hỏi này được không? –

+1

Tất nhiên bạn có thể tạo đối tượng của riêng bạn. Nhưng nó sẽ có một phương thức như PythonArray.getElement (int elementIndex) – borjab

Trả lời

19

Java không hỗ trợ chỉ số tiêu cực, để truy cập vào ô cuối cùng, bạn nên sử dụng

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

index Java subscript bắt đầu với 0. Không chỉ số tiêu cực có thể được sử dụng. Nếu ở tất cả được sử dụng thì java sẽ ném Array Index ra khỏi giới hạn Ngoại lệ.

2

Để thực hiện một cái gì đó như thế này, bạn sẽ phải tạo ra một danh sách gấp đôi liên kết hình tròn ... Tôi không biên dịch và kiểm tra điều này, nhưng đây là ý tưởng chung ...

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()); 
} 
Các vấn đề liên quan