【问题标题】:How to change the following class to a class that uses ArrayList and LinkedList? [duplicate]如何将下面的类改为使用ArrayList和LinkedList的类? [复制]
【发布时间】:2018-04-30 03:53:16
【问题描述】:

如何将下面的类改成使用ArrayList和LinkedList的类?我必须更改此类中的所有代码。

我对 ArrayList 和 LinkedList 感到困惑

import java.util.ArrayList;

public class ArrayStack {
    private int maxsize;
    private int top;
    private int[] items;

    public ArrayStack(int maxsize) {
        if (maxsize <= 0)
            throw new ArrayStackException("Stack size must be positive");
        items = new int[maxsize];
        this.maxsize = maxsize;
        top = 0;
    }

    public void push(int item) {
        if (top == items.length)
            throw new ArrayStackException("Overflow Error");
        items[top]=item;
        top++;
    }

    public int pop() {
        if (isEmpty()) 
            throw new ArrayStackException("Underflow Error");
        return items[--top];
    }

    public boolean isEmpty() {
        return (top==0); 
    }

    public static class ArrayStackException extends RuntimeException {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;

        public ArrayStackException(String message) {
            super(message);
        }
    }

    public static void main (String[] a) {
        ArrayStack stack = new ArrayStack(3);
        stack.push(1);
        stack.push(2);
        stack.push(3);

        // srtack.push(4); //over flow error

        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
    }
}

给我一​​些关于这个问题的解释。

【问题讨论】:

  • implements ArrayList是什么意思,ArrayList不是接口。
  • 我的意思是在 java 上使用了 ArrayList
  • 你到底有什么不明白的?我们不是来帮你做作业的
  • 我不了解java上的ArrayList和LinkedList
  • 也许这段代码可以解释我的问题

标签: java arraylist linked-list


【解决方案1】:

ArrayList: ArrayList 是集合框架的一部分,存在于 java.util 包中。它为我们提供了 Java 中的动态数组。虽然它可能比标准数组慢,但在需要对数组进行大量操作的程序中很有帮助。

示例:

// Java program to demonstrate working of ArrayList in Java
import java.io.*;
import java.util.*;

class arrayli
{
    public static void main(String[] args)
                       throws IOException
    {
        // size of ArrayList
        int n = 5;

        //declaring ArrayList with initial size n
        ArrayList<Integer> arrli = new ArrayList<Integer>(n);

        // Appending the new element at the end of the list
        for (int i=1; i<=n; i++)
            arrli.add(i);

        // Printing elements
        System.out.println(arrli);

        // Remove element at index 3
        arrli.remove(3);

        // Displaying ArrayList after deletion
        System.out.println(arrli);

        // Printing elements one by one
        for (int i=0; i<arrli.size(); i++)
            System.out.print(arrli.get(i)+" ");
    }
}

LinkedList: Java LinkedList 类使用双向链表来存储元素。它提供了一个链表数据结构。它继承了 AbstractList 类并实现了 List 和 Deque 接口。

关于Java LinkedList的重点是:

  • Java LinkedList 类可以包含重复元素。
  • Java LinkedList 类维护插入顺序。
  • Java LinkedList 类未同步。
  • 在 Java LinkedList 类中,操作速度很快,因为没有移位 需要发生。
  • Java LinkedList 类可用作列表、堆栈或队列。

示例:

import java.util.*;  
public class TestCollection7{  
 public static void main(String args[]){  

  LinkedList<String> al=new LinkedList<String>();  
  al.add("Ravi");  
  al.add("Vijay");  
  al.add("Ravi");  
  al.add("Ajay");  

  Iterator<String> itr=al.iterator();  
  while(itr.hasNext()){  
   System.out.println(itr.next());  
  }  
 }  
}  

更多区别,可以参考https://www.javatpoint.com/difference-between-arraylist-and-linkedlist

【讨论】:

  • 感谢您的帮助
  • 欢迎您@DaniCham
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
相关资源
最近更新 更多