繁体   English   中英

使用数组实现列表

[英]implementing list using arrays

我正在尝试使用数组和泛型实现列表。 我对如何将值插入通用列表感到困惑。 Scanner的nextXXX变体需要特定类型,但我们只在运行时知道类型。

class Arraylist<T>
{
    static Scanner input = new Scanner(System.in);
    static T list[];
    static int top = -1;

    public static void displaymenu()
    {
        int choice;
        do {
            // get choice from user
            switch (choice) {
            case 1:
                list = createlist();
                break;
            case 2:
                insertnode();
                break;
            // ........
            }
        } while (true);
    }

    public static Object[] createlist()
    {
        list = new T[LIST_SIZE];
        return list;
    }

    public static void insertnode()
    {
        T o;
        top++;
        out.println("Enter the value to insert:");
        // o = user's input. I'm confused here???
    }
}

谢谢。

这样的事情怎么样:

public class ArrayList<T> {
    private T list[];
    private int last;
    public ArrayList() {
        list = (T[])new Object[10];
    }
    public void add(T elem) {
        if(last < list.length)
            list[last++] = elem;
        else {
            T newList[] = (T[])new Object[list.length*2];
            System.arraycopy(list, 0, newList, 0, list.length);
            list = newList;
            list[last++] = elem;
        }
    }
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for(int i = 0; i < last; i++) {
            sb.append(list[i].toString()+",");
        }
        sb.replace(sb.length()-1, sb.length(), "");
        sb.append(']');
        return sb.toString();
    }

    public static void main(String[] args) {
        ArrayList<String> stringList = new ArrayList<String>();
        stringList.add("Hello");
        stringList.add("World");
        stringList.add("Foo");
        System.out.println(stringList);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM