Java 如何通过引用修改类数组元素
我是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
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
returnidx
并在remove
中使用它。或者,如果您需要lookup
方法以该形式成为public
,则创建一个新的私有方法返回索引。最简单的方法:使用lookup
return codeidx
并使用它nremove
。或者,如果需要将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应该与节点对象中的数据字段匹配。