Java 更新链表的数据

Java 更新链表的数据,java,linked-list,Java,Linked List,是否可以更新LinkedList节点的数据?如果是,那怎么办?我真的需要一个提示 是的,你能做到。根据是否存储可变类型,在此处使用。两个选项: 如果您存储的是可变类型(带有getter/setter方法的frex simple Bean),则只需更新对象的状态(与LinkedList实现本身无关) 如果存储的是不可变类型(frex字符串),则可以使用 如果您存储的是一个自定义类型,那么它实际上是一个设计问题(无论您是否希望使该类型可变) 但是我可以手动操作吗?如果是,比如何 如果“手动执行”的意

是否可以更新LinkedList节点的数据?如果是,那怎么办?我真的需要一个提示

是的,你能做到。根据是否存储可变类型,在此处使用。

两个选项:

  • 如果您存储的是可变类型(带有getter/setter方法的frex simple Bean),则只需更新对象的状态(与LinkedList实现本身无关)
  • 如果存储的是不可变类型(frex字符串),则可以使用
  • 如果您存储的是一个自定义类型,那么它实际上是一个设计问题(无论您是否希望使该类型可变)

    但是我可以手动操作吗?如果是,比如何

    如果“手动执行”的意思是破坏
    LinkedList
    类封装并直接更新类的私有数据结构

    • 使用反射可以做到这一点
    • 这真是个坏主意/坏习惯

    正确的方法是使用
    set
    操作。如果您担心迭代链表的成本,请使用不同的
    list
    实现。<代码> SET>代码>操作在<代码> > ARARYList上是很快的,或者您可以使用自定义链表实现来实现这一点。

    + 1。如果您需要使用它,您应该考虑一个ARARYLIST。@ JunaIDHASAN,手动是什么意思?您可以通过将AtomicReference添加到列表中的所有节点来实现这一点。您可以随时更改原子引用。你不应该这样做。只需按设计使用列表。使用indexOf()方法查找包含要替换的数据的第一个节点的索引,并使用set()方法在此节点中存储另一个对象。并阅读LinkedList的javadoc。这里描述了所有的方法,您不能使用任何其他方式来修改列表。直接访问节点没有任何好处,完全有理由不这样做。如果您担心性能,ArrayList可能是执行此操作的更好选择。好主意是什么?好主意是使用LinkedList提供的公共界面。如果要在特定索引处用新对象替换对象,请使用
    set()
    方法,如其他答案所示。