Java 如何通过引用修改类数组元素

Java 如何通过引用修改类数组元素,java,Java,我是Java新手。如果没有指针,我想不出怎么做: //具有分离链接的哈希表 class HashTbl { class Node { int data; Node next; } private Node tbl[]; HashTbl(int size) { tbl[] = new Node[size * 1.25]; } public int insert(int item) { // insert data } publ

我是Java新手。如果没有指针,我想不出怎么做:

//具有分离链接的哈希表

class HashTbl {
  class Node {
    int data;
    Node next;
  }

  private Node tbl[];

  HashTbl(int size) {
    tbl[] = new Node[size * 1.25];
  }

  public int insert(int item) {
    // insert data
  }

  public Node lookup(int item) {
    // search for item in the hashtable
    // the item was found at array index 'idx'
    return tbl[idx];
  } 

  public int remove (int item) {
    Node n = lookup(item);
    n = null;  // <--- this obviously doesn't work, what i want to do is set tbl[idx] to null
  }

}
类HashTbl{
类节点{
int数据;
节点下一步;
}
专用节点tbl[];
HashTbl(整数大小){
tbl[]=新节点[size*1.25];
}
公共整数插入(整数项){
//插入数据
}
公共节点查找(int项){
//在哈希表中搜索项
//在数组索引“idx”处找到该项
返回tbl[idx];
} 
公共整数删除(整数项){
节点n=查找(项);

n=null;//最简单的方法:使用
lookup
return
idx
并在
remove
中使用它。或者,如果您需要
lookup
方法以该形式成为
public
,则创建一个新的私有方法返回索引。

最简单的方法:使用
lookup
return code
idx
并使用它n
remove
。或者,如果需要将
lookup
方法设置为该形式的
public
,则创建一个新的私有方法来返回索引。

只需执行以下操作:

tbl[item] = null;
更新:我忽略了
lookup()
中遗漏了一些代码的事实。请改为执行以下操作:

private int findIdx(int item) {
  // search for item in the hashtable
  // the item was found at array index 'idx'
  return idx;
} 

public Node lookup(int item) {
  return tbl[findIdx(item)];
}   

public int remove (int item) {
  tbl[findIdx(item)] = null;
}
只需这样做:

tbl[item] = null;
更新:我忽略了
lookup()
中遗漏了一些代码的事实。请改为执行以下操作:

private int findIdx(int item) {
  // search for item in the hashtable
  // the item was found at array index 'idx'
  return idx;
} 

public Node lookup(int item) {
  return tbl[findIdx(item)];
}   

public int remove (int item) {
  tbl[findIdx(item)] = null;
}

我建议您使用ArrayList而不是普通数组

List<Node> tbl = new ArrayList<Node>();
List tbl=new ArrayList();

有关详细信息,请参阅java手册。

我建议您使用ArrayList而不是普通数组

List<Node> tbl = new ArrayList<Node>();
List tbl=new ArrayList();

查看java手册了解详细信息。

java没有指针,但您可以同时传入数组和索引,并清除数组中的插槽。Chris,我想我将使用您的解决方案:-)java没有指针,但您可以同时传入数组和索引,并清除数组中的插槽。Chris,我想我将使用w对于您的解决方案:-)我认为他在
lookup
方法中故意省略了查找
idx
的不相关方式。我认为通常
idx!=item
。是的,item应该匹配节点对象中的数据字段。我认为他在
查找中故意省略了查找
idx
的不相关方式up
方法。我认为通常
idx!=item
。是的,item应该与节点对象中的数据字段匹配。