【问题标题】:Keeping default values from an Array?保留数组的默认值?
【发布时间】:2014-05-09 05:28:15
【问题描述】:

我已经为此困扰了几天,所以经过大量研究和咖啡后得出的结论是我需要进行“深度复制”。显然在 Java 中,您不能复制对象,因为您只是复制对对象的引用,因此您总是最终会修改对象本身。

从对象(它是一个 Android 计时器应用程序)中提取整数时间数组的最佳方法是什么,然后将这些时间保存在某个地方,以便用户可以随时“重置”时间,重新填充列表默认时间。

从对象中获取副本并使用那些而不是修改对象可能会更好,然后在需要时使用对象重新获取默认时间?

【问题讨论】:

  • 你可以.clone()一个数组;如果数组的元素实现了Cloneable,您将拥有一个原始副本。请注意,它也适用于大多数 List 实现

标签: java arrays list copy clone


【解决方案1】:

试试这个:

public static void main(String[] args) {
    List<Integer> times = new ArrayList<Integer>();
    times.add(1);
    times.add(2);
    times.add(3);

    List<Integer> timesCopy = new ArrayList<Integer>(times);
    timesCopy.remove(0);

    System.out.println(times);
    System.out.println(timesCopy);
}

timesCopy 已被修改,但times 仍如初。

【讨论】:

  • 是的,因为Integer 是不可变的,所以这行得通;如果元素不是不可变的,则效果不佳;)
  • 感谢您的回答,非常有帮助!但是,我能问一下你为什么要使用 timesCopy.remove(0) 吗?在我的设置中,它从列表中删除了第一个索引(正如我所料),这意味着我很矮!
  • 啊,够公平的!再次感谢。 :)
猜你喜欢
  • 2021-10-29
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
相关资源
最近更新 更多