Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链表直觉_Java_Linked List - Fatal编程技术网

Java 链表直觉

Java 链表直觉,java,linked-list,Java,Linked List,} 使用泛型: public class Box { private Object object; public void set(Object object) { this.object = object; } public Object get() { return object; } //T代表“类型” 公共类箱{ 私人T; 公共空集(T){ t=t; } 公共不获取(){ 返回t; } } 我对链表如何直观地工作有一个大致的概念,但是我无法在代码中看到它 我知道你有元素和对下一个节

}

使用泛型:

public class Box {
private Object object;

public void set(Object object) { this.object = object; }
public Object get() { return object; }
//T代表“类型”
公共类箱{
私人T;
公共空集(T){
t=t;
}
公共不获取(){
返回t;
}
}
我对链表如何直观地工作有一个大致的概念,但是我无法在代码中看到它

我知道你有元素和对下一个节点的引用。在上面的代码中,“.”运算符在遍历列表直到达到null时是如何工作的

我相信‘next’是一个参考变量。下一步,它是如何在代码/计算机中工作的

在一个无关的音符上,节点?而不是节点(E)?差别在上面的例子中,似乎“object”被“t”取代,我看不出它的优点;


非常感谢您的帮助,提前谢谢

在上面的代码中,只要
head.next
不等于null,p将被设置为列表中的下一个“link”。这将继续下去
p.next
返回对下一个链接的引用,然后将该链接设置为p。此参考链将继续


节点
是一种泛型类型,允许类的用户传递节点要包含的类型。这比简单地使用强制类型转换允许更大的类型安全性。

假设您的
节点
类属于以下类型:

// T stands for "Type"
public class Box<T> {
    private T t; 

    public void set(T t) { 
        this.t = t;
    }
    public T get() { 
        return t;
    }
}
类节点{
节点下一步;
T元素;
}        
现在,“Node”类的任何引用都可以访问它的两个属性。而
操作符用于访问属性


设置
p=p.next
时,它只是内部指针的移动

将LinkedList视为链接节点的列表可能会有所帮助。其中每个节点将保留对下一个节点的引用(如果存在)。我不确定它是否会有帮助,但当我不得不在学校里做这个作业时,我发现浏览并尝试使用它非常有帮助

对于泛型,节点将是Object类型的节点,其中节点将是特定类型的节点。例如,LinkedList将保存字符串,可能有助于更好地理解泛型是如何工作的

下面是一个使用泛型的简单示例:

class Node<T>{
    Node<T> next;
    T element;
}        
类框{
私有E变量;
公共E get(){
返回变量;
}
公共无效集(E变量){
变量=变量;
}
公共静态void main(字符串[]args){
框示例=新框();
示例。设置(“测试”);
System.out.println(example.get());
Box example2=新框();
例2.集合(1);
//示例2.set(“test”);将不起作用,因为它是整数类型
System.out.println(例如2.get()+1);
}
}

是否将“下一步”定义为变量?它不在上面,应该是??下一个可以是变量或方法,但在这两种情况下,它都返回对链中下一个“链接”的引用。然后将其设置为p和循环repeatsahh,因此必须在类节点中定义“next”吗?对象p有可以从其父类使用的变量?您在上面定义的类节点是什么?仍然不理解泛型的概念。。。想再详细一点吗?谢谢。我不想问这么含糊的问题,但你有什么特别的地方不明白吗?还是仅仅是一般概念?我刚刚编辑了我的答案,给出了一个如何使用泛型的示例。因此,类“example”被设置为泛型,以接受任何输入的基元类型变量?有道理。是的,除了那些不是基元类型。字符串和整数(不是int)是对象。您可以使用上面的代码,让它接受任何对象。
class Node<T>{
    Node<T> next;
    T element;
}        
Class Box<E>{
    private E variable;

    public E get(){
        return variable;
    }

    public void set(E variable){
        this.variable=variable;
    }

    public static void main(String[] args){
        Box<String> example=new Box<String>();
        example.set("test");
        System.out.println(example.get());

        Box<Integer> example2=new Box<Integer>();
        example2.set(1);
        //example2.set("test");will not work because it is types as an Integer
        System.out.println(example2.get()+1);
    }
}