将字符串添加到 ArrayList<LinkedList<String>> Java
Adding Strings to ArrayList<LinkedList<String>> Java
我在将字符串添加到 ArrayList> 时遇到问题。已声明
ArrayList<LinkedList<String>> table = new ArrayList<>();
在 class 的构造函数中,我调用了 ArrayLists ensureCapacity 方法,这似乎没有达到我的预期。我以为它会增加其中 LinkedList 的插槽,但它仍然是空的。
当我尝试调用我的添加方法时:
public boolean add(String s)
{
boolean wanted = true;
if(false)
{
wanted = false;
}
int index = Math.abs(s.hashCode() % table.size());
table.ensureCapacity(index);
table.get(index).addFirst(s);
return wanted;
}
由于 ensureCapacity 没有增加 table 大小,我得到 java.lang.ArithmeticException: 为零。
我该如何解决这个问题?
我在脑海中将其描绘为 ArrayList 是 table 中的第一列,而 LinkedLists 是行。因此 ArrayList 中的每个插槽都引用一个 LinkedList,其中将保存字符串。但是由于 ArrayList 在开始时是空的,我无法使用 ensureCapacity 增加并且在 add 方法中使用 % 运算符它不会增加自身。
ensureCapacity()
可能会调整 ArrayList 的支持数组的大小,但不会改变实际存储在列表中的元素数。因此,它不会影响 table.size()
的 return 值。
table.get(index)
将 return 为空,除非您向列表中添加至少 index+
个元素。
看起来您正在尝试实现类似于 HashMap
的东西(尽管 HashMap
使用数组而不是 ArrayList)。
您可以依赖 table.size()
的唯一方法是将 n
个空的 LinkedList
添加到 table
。然后 table.size()
将 return n
,这就是您的 table 的大小。
当列表不够大时,用空 LinkedList
s
填充列表
while (table.size() < EXPECTED_SIZE) {
table.add(new LinkedList<String>();
}
我在将字符串添加到 ArrayList> 时遇到问题。已声明
ArrayList<LinkedList<String>> table = new ArrayList<>();
在 class 的构造函数中,我调用了 ArrayLists ensureCapacity 方法,这似乎没有达到我的预期。我以为它会增加其中 LinkedList 的插槽,但它仍然是空的。
当我尝试调用我的添加方法时:
public boolean add(String s)
{
boolean wanted = true;
if(false)
{
wanted = false;
}
int index = Math.abs(s.hashCode() % table.size());
table.ensureCapacity(index);
table.get(index).addFirst(s);
return wanted;
}
由于 ensureCapacity 没有增加 table 大小,我得到 java.lang.ArithmeticException: 为零。 我该如何解决这个问题? 我在脑海中将其描绘为 ArrayList 是 table 中的第一列,而 LinkedLists 是行。因此 ArrayList 中的每个插槽都引用一个 LinkedList,其中将保存字符串。但是由于 ArrayList 在开始时是空的,我无法使用 ensureCapacity 增加并且在 add 方法中使用 % 运算符它不会增加自身。
ensureCapacity()
可能会调整 ArrayList 的支持数组的大小,但不会改变实际存储在列表中的元素数。因此,它不会影响 table.size()
的 return 值。
table.get(index)
将 return 为空,除非您向列表中添加至少 index+
个元素。
看起来您正在尝试实现类似于 HashMap
的东西(尽管 HashMap
使用数组而不是 ArrayList)。
您可以依赖 table.size()
的唯一方法是将 n
个空的 LinkedList
添加到 table
。然后 table.size()
将 return n
,这就是您的 table 的大小。
当列表不够大时,用空 LinkedList
s
while (table.size() < EXPECTED_SIZE) {
table.add(new LinkedList<String>();
}