Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建LinkedList数组并将它们全部初始化为空字符串?_Java_Arrays_Linked List - Fatal编程技术网

Java 如何创建LinkedList数组并将它们全部初始化为空字符串?

Java 如何创建LinkedList数组并将它们全部初始化为空字符串?,java,arrays,linked-list,Java,Arrays,Linked List,我试图用java创建一个链表的字符串数组。然后将数组中的所有内容初始化为空字符串。目前,由于构造函数的原因,它们都被初始化为null。当我对数组的内容使用equals()方法时,这会导致NullPointerException。所以我想将它们全部初始化为一个空字符串。我该怎么做 private LinkedList<String>[] table; public Hashtable (int capacity, String hashFn) { ta

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

    private LinkedList<String>[] table;

    public Hashtable (int capacity, String hashFn) {
        table = new LinkedList[capacity]
        hashFn = hashFn;
    }
private LinkedList[]表;
公共哈希表(int容量,字符串哈希fn){
table=新链接列表[容量]
hashFn=hashFn;
}

我认为您需要循环并将每个项目设置为空字符串,如下所示

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);
    }
  }
private LinkedList[]表;
公共哈希表(int容量,字符串哈希fn){
表=新的LinkedList[容量];
字符串emptyString=“”;

对于(int i=0;i如果我正确理解了您的问题,那么我认为最好使用
.equals()
如下,以避免
NPE
,如果您想将
链接列表中的
字符串
与任何给定字符串进行比较:

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

直接的答案是,
Collections
类提供了一个
nCopies
方法,您可以使用如下方法:

    List<String> l = new LinkedList<String>(Collections.nCopies(capacity, ""));
List l=newlinkedlist(Collections.nCopies(capacity)(“”);
避免为
循环编写显式的
。不过,为
循环编写
会更有效


但是我真正想说的是
LinkedList
对于实现主哈希表来说是一个糟糕的选择。像
get(int)
set(int,T)
这样的操作对于链表来说是
O(N)
。你应该使用
ArrayList
,或者更好的是
String[]
。它们有
O(1)
获取和设置元素的操作。除此之外,它们使用的内存显著减少

此外,您最好对
null
执行显式测试,而不是填充空字符串。实际上,JVM可能会在seen之后执行该空测试。通过自己执行该测试,您1)避免了与空字符串的比较,2)节省了初始化时间


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

我想如果你在帖子中添加了你使用的语言,或者至少添加了标签,你会得到更多的回复。如果你的问题已经被回答,或者不再有效,请勾选最合适的答案,这样每个人都知道问题已经解决。谢谢