如何创建链接列表数组并将所有链接列表初始化为空字符串?

时间:2012-04-06 04:03:47

标签: java arrays linked-list

我正在尝试在java中创建一个链表的字符串数组。然后将数组内的所有内容初始化为空字符串。目前,由于构造函数,它们都使用null初始化。当我对数组的内容使用NullPointerException方法时,这会导致equals()。所以我想将它们全部初始化为空字符串。我该怎么做?

    private LinkedList<String>[] table;

    public Hashtable (int capacity, String hashFn) {
        table = new LinkedList[capacity]
        hashFn = hashFn;
    }

3 个答案:

答案 0 :(得分:1)

我认为你需要循环并将每个项目设置为空字符串,就像这样......

private LinkedList<String>[] table;

public Hashtable (int capacity, String hashFn) {
  table = new LinkedList[capacity];
  String emptyString = "";
  for (int i=0;i<capacity,i++){
    table.add(emptyString);
    }
  }

我从未试图做你想做的事,但我找不到任何快速的方法去做。

当然,如果您将其设为String[] array而不是LinkedList<String>[] array,则只需拨打java.util.Arrays.fill(array,"");

即可

答案 1 :(得分:1)

如果我正确理解了您的问题,那么在我看来,如果您想要比较.equals()NPE,那么更好的办法就是使用String来避免LinkedList {1}}任何给定的字符串:

if("givenString".equals(strObjFromLinkedList)) {
        //Do what you want
}

答案 2 :(得分:0)

直接的答案是Collections类提供了nCopies方法,你可以使用这样的方法:

    List<String> l = new LinkedList<String>(Collections.nCopies(capacity, ""));

避免编写显式的for循环。但for循环会更有效。


但我真正想说的是LinkedList是实现主哈希表的BAD选择。对于链接列表,get(int)set(int, T)等操作为O(N)。您应该使用ArrayList<String>,或者更好的是String[]。它们具有O(1)个用于获取和设置元素的操作。最重要的是,他们使用的内存要少得多。

此外,您最好对null进行显式测试,而不是填充空字符串。实际上,无论如何,JVM很可能会在seens后面执行null测试。通过自己动手,你1)避免与空字符串比较,2)节省初始化时间。

解决NPE问题的方法不止一种......