原文: https://howtodoinjava.com/data-structure/list-implementation-example-in-java/

在本教程中,我将给出 Java 中List的示例实现。 通过在DemoList类中添加或删除方法,可以随意自定义列表的行为。 如果您有一些想法可以改善此实现,请与我们分享。

Java 列表实现示例

在此类DemoList.java中,我们将创建具有以下功能的List实现:

  • 列表可能会从零增长到无限大小(至少在理论上是这样)。
  • 创建列表时,将使用最少 10 个元素初始化列表。
  • 列表将提供在生命周期中任何状态下获取,添加,删除和打印列表的方法。

列表实现的源代码

  1. package com.howtodoinjava.datastructure;
  2. import java.util.Arrays;
  3. public class DataList<E>
  4. {
  5. //Size of list
  6. private int size = 0;
  7. //Default capacity of list is 10
  8. private static final int DEFAULT_CAPACITY = 10;
  9. //This array will store all elements added to list
  10. private Object elements[];
  11. //Default constructor
  12. public DataList() {
  13. elements = new Object[DEFAULT_CAPACITY];
  14. }
  15. //Add method
  16. public void add(E e) {
  17. if (size == elements.length) {
  18. ensureCapacity();
  19. }
  20. elements[size++] = e;
  21. }
  22. //Get method
  23. @SuppressWarnings("unchecked")
  24. public E get(int i) {
  25. if (i >= size || i < 0) {
  26. throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i);
  27. }
  28. return (E) elements[i];
  29. }
  30. //Remove method
  31. @SuppressWarnings("unchecked")
  32. public E remove(int i) {
  33. if (i >= size || i < 0) {
  34. throw new IndexOutOfBoundsException("Index: " + i + ", Size " + i);
  35. }
  36. Object item = elements[i];
  37. int numElts = elements.length - ( i + 1 ) ;
  38. System.arraycopy( elements, i + 1, elements, i, numElts ) ;
  39. size--;
  40. return (E) item;
  41. }
  42. //Get Size of list
  43. public int size() {
  44. return size;
  45. }
  46. //Print method
  47. @Override
  48. public String toString()
  49. {
  50. StringBuilder sb = new StringBuilder();
  51. sb.append('[');
  52. for(int i = 0; i < size ;i++) {
  53. sb.append(elements[i].toString());
  54. if(i<size-1){
  55. sb.append(",");
  56. }
  57. }
  58. sb.append(']');
  59. return sb.toString();
  60. }
  61. private void ensureCapacity() {
  62. int newSize = elements.length * 2;
  63. elements = Arrays.copyOf(elements, newSize);
  64. }
  65. }

让我们快速测试一下List的实现。

  1. package com.howtodoinjava.datastructure;
  2. public class Main
  3. {
  4. public static void main(String[] args)
  5. {
  6. DataList<Integer> list = new DataList<>();
  7. //Add elements
  8. list.add(1);
  9. list.add(2);
  10. list.add(3);
  11. System.out.println(list);
  12. //Remove elements from index
  13. list.remove(2);
  14. System.out.println(list);
  15. //Get element with index
  16. System.out.println( list.get(0) );
  17. System.out.println( list.get(1) );
  18. //List Size
  19. System.out.println(list.size());
  20. }
  21. }
  1. Output:
  2. [1,2,3,4,5]
  3. [1,2,4,5]
  4. 1
  5. 2
  6. 4

如以上输出所示,我们的列表实现能够提供所有必要的功能。

学习愉快!