在Python中,允许使用负数组索引从数组的右侧开始计数。例如,array [-1]是最后一个元素,array [-2]是数组中的第二个最后一个元素。你会如何用Java做到这一点?
答案 0 :(得分:21)
Java不支持负索引,要访问最后一个单元格,您应该使用
array[array.length-1] = lastElement;
答案 1 :(得分:3)
Java下标索引从0开始。不能使用负索引。如果完全使用那么java将抛出数组索引超出范围Exception。
答案 2 :(得分:3)
要实现这样的东西,你必须创建一个循环的双向链表...... 我没有编译和测试这个,但这是一般的想法...
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());
}