【问题标题】:Array of LinkedLists链表数组
【发布时间】:2012-01-07 04:07:48
【问题描述】:

我一直在尝试在 Java 中实现一个哈希表来进行练习。为此,我正在尝试使用链表数组。以下是部分代码:

class HashSet implements HashInterface {

    private final int TABLE_SIZE = 100;
    private LinkedList<Integer>[] myTable;

    myTable = (LinkedList<Integer>[]) new LinkedList[TABLE_SIZE];

    for (int i = 0; i < TABLE_SIZE; i++)
        myTable[i] = new LinkedList<Integer>;
}

问题是,每当我运行代码时,它都会说:

C:\Java\hash>javac Main.java
Main.java:17: error: <identifier> expected
    myTable = (LinkedList<Integer>[]) new LinkedList[TABLE_SIZE];
           ^
Main.java:19: error: illegal start of type
    for (int i = 0; i < TABLE_SIZE; i++)
    ^
Main.java:19: error: ')' expected
    for (int i = 0; i < TABLE_SIZE; i++)
              ^
Main.java:19: error: illegal start of type
    for (int i = 0; i < TABLE_SIZE; i++)
                 ^
Main.java:19: error: <identifier> expected
    for (int i = 0; i < TABLE_SIZE; i++)
                  ^
Main.java:19: error: ';' expected
    for (int i = 0; i < TABLE_SIZE; i++)
                   ^
Main.java:19: error: > expected
    for (int i = 0; i < TABLE_SIZE; i++)
                                  ^
Main.java:19: error: '(' expected
    for (int i = 0; i < TABLE_SIZE; i++)
                                     ^
Main.java:20: error: ']' expected
        myTable[i] = new LinkedList<Integer>;
                ^
Main.java:20: error: ';' expected
        myTable[i] = new LinkedList<Integer>;
                 ^
Main.java:20: error: <identifier> expected
        myTable[i] = new LinkedList<Integer>;
                                            ^
11 errors 

我在这里做错了什么?

【问题讨论】:

  • 您还应该在开始时考虑使用 IDE(如果可能的话)。 Java 非常适合标记,Netbeans 或 Eclipse 都具有代码完成/语法突出显示,这将帮助您学习该语言。此外,它是一种非常冗长的语言,因此 IDE 基本上是生产力所必需的。上面的“外部代码”方法会有一个美妙的红色波浪线。
  • 我刚开始时实际上是相当反 IDE 的。它们增加了一定程度的复杂性并隐藏了 Java 编译和执行环境的基础。当必须明确说明和理解它们时,它们更容易学习,并使未来的 IDE 工作更容易一些。 YMMV。

标签: java arrays linked-list hashtable


【解决方案1】:

您已将代码放在方法之外(以及静态初始化块之外)。

您可以声明变量,但不能执行代码。您的大部分代码应该在方法中。

【讨论】:

    【解决方案2】:

    改变这个 -

    myTable[i] = new LinkedList<Integer>;
    

    myTable[i] = new LinkedList<Integer>();
    

    也正如@Dav Newton 提到的那样 - 您的处理代码应该在一个方法中。

    【讨论】:

      猜你喜欢
      • 2012-11-11
      • 2014-02-20
      • 2015-09-19
      • 2022-01-10
      • 2010-09-15
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多