Java 中的自定义列表实现示例
Java 中的自定义列表实现示例
在本教程中,我将给出 Java 中List
的示例实现。 通过在DemoList
类中添加或删除方法,可以随意自定义列表的行为。 如果您有一些想法可以改善此实现,请与我们分享。
Java 列表实现示例
在此类DemoList.java
中,我们将创建具有以下功能的List
实现:
- 列表可能会从零增长到无限大小(至少在理论上是这样)。
- 创建列表时,将使用最少 10 个元素初始化列表。
- 列表将提供在生命周期中任何状态下获取,添加,删除和打印列表的方法。
列表实现的源代码
package com.howtodoinjava.datastructure;
import java.util.Arrays;
public class DataList<E>
{
//Size of list
private int size = 0;
//Default capacity of list is 10
private static final int DEFAULT_CAPACITY = 10;
//This array will store all elements added to list
private Object elements[];
//Default constructor
public DataList() {
elements = new Object[DEFAULT_CAPACITY];
}
//Add method
public void add(E e) {
if (size == elements.length) {
ensureCapacity();
}
elements[size++] = e;
}
//Get method
@SuppressWarnings("unchecked")
public E get(int i) {
if (i >= size || i < 0) {
throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i);
}
return (E) elements[i];
}
//Remove method
@SuppressWarnings("unchecked")
public E remove(int i) {
if (i >= size || i < 0) {
throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i);
}
Object item = elements[i];
int numElts = elements.length - ( i + 1 ) ;
System.arraycopy( elements, i + 1, elements, i, numElts ) ;
size--;
return (E) item;
}
//Get Size of list
public int size() {
return size;
}
//Print method
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append('[');
for(int i = 0; i < size ;i++) {
sb.append(elements[i].toString());
if(i<size-1){
sb.append(",");
}
}
sb.append(']');
return sb.toString();
}
private void ensureCapacity() {
int newSize = elements.length * 2;
elements = Arrays.copyOf(elements, newSize);
}
}
让我们快速测试一下List
的实现。
package com.howtodoinjava.datastructure;
public class Main
{
public static void main(String[] args)
{
DataList<Integer> list = new DataList<>();
//Add elements
list.add(1);
list.add(2);
list.add(3);
System.out.println(list);
//Remove elements from index
list.remove(2);
System.out.println(list);
//Get element with index
System.out.println( list.get(0) );
System.out.println( list.get(1) );
//List Size
System.out.println(list.size());
}
}
Output:
[1,2,3,4,5]
[1,2,4,5]
1
2
4
如以上输出所示,我们的列表实现能够提供所有必要的功能。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果