linkedlist.java
来自「Sony Ericsson手机上的Facebook客户端全套代码」· Java 代码 · 共 265 行
JAVA
265 行
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: LinkedList.java
package se.southend.drops.tools;
// Referenced classes of package se.southend.drops.tools:
// List
public class LinkedList
implements List
{
private class ListNode
{
private ListNode prev;
private ListNode next;
private Object element;
protected ListNode(Object element)
{
this.element = element;
}
}
public LinkedList(int dummy)
{
this();
}
public LinkedList()
{
header = new ListNode(null);
empty();
}
public LinkedList(Object element[])
{
this();
add(element);
}
public Object get(int position)
{
if(position < 0 || position >= size)
{
return null;
} else
{
setPointer(position);
return current.element;
}
}
public void set(Object obj, int i)
{
}
public Object first()
{
return header.next.element;
}
public Object last()
{
return header.prev.element;
}
public void add(Object element)
{
ListNode tempcurrent = current;
int temppointer = pointer;
insert(element, size);
current = tempcurrent;
pointer = temppointer;
}
public void add(Object element[])
{
ListNode tempcurrent = current;
int temppointer = pointer;
insert(element, size);
current = tempcurrent;
pointer = temppointer;
}
public void insert(Object element, int index)
{
ListNode node = new ListNode(element);
setPointer(index);
node.prev = current.prev;
current.prev.next = node;
node.next = current;
current.prev = node;
pointer++;
size++;
}
public void insert(Object elements[], int index)
{
for(int i = elements.length; i >= 0; i--)
insert(elements[i], pointer);
}
public void remove(Object element)
{
int index = indexOf(element, 0);
if(index >= 0)
remove(index);
}
public void remove(int index)
{
if(size > 1)
{
setPointer(index);
current.prev.next = current.next;
current.next.prev = current.prev;
current = current.next;
size--;
} else
{
empty();
}
}
public void remove(int i, int j)
{
}
public void empty()
{
current = header;
header.next = header.prev = header;
pointer = -1;
size = 0;
}
public int size()
{
return size;
}
public boolean contains(Object element)
{
return indexOf(element, 0) >= 0;
}
public int indexOf(Object element)
{
return indexOf(element, 0);
}
public int indexOf(Object element, int fromIndex)
{
int index = 0;
if(element == null)
{
for(ListNode n = header.next; n != header; n = n.next)
{
if(n.element == null && index >= fromIndex)
return index;
index++;
}
} else
{
for(ListNode n = header.next; n != header; n = n.next)
{
if(element.equals(n.element) && index >= fromIndex)
return index;
index++;
}
}
return -1;
}
public int lastIndexOf(Object element)
{
return lastIndexOf(element, size - 1);
}
public int lastIndexOf(Object element, int fromIndex)
{
int index = size;
if(element == null)
{
for(ListNode n = header.prev; n != header; n = n.prev)
{
index--;
if(n.element == null && index <= fromIndex)
return index;
}
} else
{
for(ListNode n = header.prev; n != header; n = n.prev)
{
index--;
if(element.equals(n.element) && index <= fromIndex)
return index;
}
}
return -1;
}
public boolean isEmpty()
{
return size == 0;
}
public Object[] toArray()
{
Object result[] = new Object[size];
return toArray(result, 0);
}
public Object[] toArray(Object result[], int offset)
{
for(int i = 0; i < size; i++)
result[i] = get(i);
return result;
}
private void setPointer(int position)
{
if(position != pointer)
{
if(size - position < position - pointer)
{
current = header;
pointer = size;
} else
if(position < pointer - position)
{
current = header.next;
pointer = 0;
}
for(; pointer < position; pointer++)
current = current.next;
for(; pointer > position; pointer--)
current = current.prev;
}
}
private int size;
private int pointer;
private ListNode header;
private ListNode current;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?