使用链表实现数组

时间:2018-09-26 11:43:37

标签: java arrays list

这是在采访中问到的。

您能否在Java中实现/创建类似于Java中的Array类的对象。

基本上,我们应该能够像处理数组一样迭代对象,并且getValue()putValue()方法应该能够直接对创建的对象的索引进行操作。

ex:以下操作应在创建的对象上执行。

int ar[] = new int[5];
for(int i=0; i<5; i++){
     ar[i]=i;
}

给出的提示是使用linkedlist数据结构。 简单来说,它类似于ArrayList类的实现。

谁能给我一个主意,我们该怎么做?

4 个答案:

答案 0 :(得分:1)

他在问嵌套对象。请阅读有关装饰器模式的信息。请参见下面的示例。

public interface NodeInterface{

// your methods
}

public class Node implements NodeInterface{
    private NodeInterface node = null;

   // your methods

}

每个节点都包含相同类型的嵌套对象。没有对象的最后一个对象指向null。您可以遍历直到找到空值。

答案 1 :(得分:0)

我问过一个类似的问题,在回答之前,它与节点和链接列表的概念有关。通过以下链接可以找到我的问题

Problems understanding concept of nodes and linked list

我接受了答案,因为它帮助我可视化了链接列表的外观和Node类的外观。

当制作节点对象时,然后可以制作自定义类以更改为该节点存储的值,以及检索和显示存储在节点中的数据。

节点类看起来像这样

public class Node{

  private int val;
  private Node node;

  public Node(int val){
      this.val=val;
  }

  public Node(Node node, int val){
      this.node = node;
      this.val = val;
  }

  public Node getNext(){
      return node;
  }

  public int getVal(){
      return val;
  }

}

很显然,您可以修改代码以存储所需的任何内容,但这可能正是访问者所需要的。

答案 2 :(得分:-1)

使用LinkedList,它应该看起来像:

LinkedList<Integer> linkedList = new LinkedList<>();
for(int i=0; i<5; i++){
     linkedList.add(i);
}

但是,我给您一个link for beginners,您可以在其中学习有关Java util软件包的所有信息。祝你好运。

答案 3 :(得分:-1)

您可以使用HashMap。以key作为数组的索引。值作为array [index]。 如果在地图上找不到索引。返回0或任何默认值。 对于默认值,您可以使用hashmap的null键。