You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

声明linked-list二维数组是否有方法无需初始化全部元素?

实现方案

你可以用惰性初始化的逻辑实现需求,完全不需要提前初始化全部链表对象:

  • 第一步仅声明二维数组结构,不需要填充初始值,以Java为例,声明语句为LinkedList<String>[][] wordStorage = new LinkedList[26][26];,该操作执行后所有数组插槽默认是空引用,不会生成多余的链表实例,几乎没有额外内存开销。
  • 存入单词时,先将首字母、第二个字母转换为0-25范围的下标,示例代码:
// 仅做小写字母示例,大写可先做归一化处理
int rowIndex = targetWord.charAt(0) - 'a';
int colIndex = targetWord.charAt(1) - 'a';
  • 存入前先判断对应下标位置的插槽是否为空,仅为空时才初始化对应链表:
if (wordStorage[rowIndex][colIndex] == null) {
    wordStorage[rowIndex][colIndex] = new LinkedList<>();
}
wordStorage[rowIndex][colIndex].add(targetWord);
  • 读取、遍历数据时,先判断对应位置是否为空,为空则直接跳过即可。

如果你的实际使用场景里,用到的首字母+第二个字母组合远小于200个,也可以选择嵌套哈希表替代二维数组,外层哈希表键为首字母,内层哈希表键为第二个字母,值为对应链表,这种方案连空的数组插槽内存都可以省下来。不过26*26的二维数组本身内存占用极低,数组方案的读写速度更快,实现逻辑也更简单,是更优先的选择。

内容的提问来源于stack exchange,提问作者Shane Butler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:54:04