Java 如何创建LinkedList数组并将它们全部初始化为空字符串?
我试图用java创建一个链表的字符串数组。然后将数组中的所有内容初始化为空字符串。目前,由于构造函数的原因,它们都被初始化为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
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问题的方法不止一种…我想如果你在帖子中添加了你使用的语言,或者至少添加了标签,你会得到更多的回复。如果你的问题已经被回答,或者不再有效,请勾选最合适的答案,这样每个人都知道问题已经解决。谢谢