当前位置: 首页 > 面试题库 >

如何复制Java收藏夹列表

田鹤轩
2023-03-14
问题内容

我有一个ArrayList,我想准确复制它。我尽可能地使用实用程序类,但前提是有人花了一些时间来使它正确。因此,自然而然地,我得到了Collections一个包含复制方法的类。

假设我有以下内容:

List<String> a = new ArrayList<String>();
a.add("a");
a.add("b");
a.add("c");
List<String> b = new ArrayList<String>(a.size());

Collections.copy(b,a);

这失败了,因为基本上它认为b不足以容纳a。是的,我知道b大小为0,但现在应该足够大了,不是吗?如果我必须先填补b,那么Collections.copy()脑海中就变成了完全没用的功能。因此,除了编写一个复制函数(我现在要做)之外,还有没有适当的方法来做到这一点?


问题答案:

呼唤

List<String> b = new ArrayList<String>(a);

创建的浅表副本ab。所有元素将以b与它们完全相同的顺序存在a(假设元素具有顺序)。

同样地,

// note: instantiating with a.size() gives `b` enough capacity to hold everything
List<String> b = new ArrayList<String>(a.size());
Collections.copy(b, a);

还创建的浅表副本ab。如果第一个参数的 容量
(大小)b不足以容纳所有的元素,则它将抛出。期望工作不需要任何分配,如果有分配,那么它将抛出该异常。这是一种优化的方法,要求将复制的集合预先分配(),但由于考虑到基于构造函数的替代方法(如上所示)没有奇怪的副作用,因此需要进行检查,因此我通常认为该功能不值得。
__a``IndexOutOfBoundsExceptionCollections.copyb

要创建深层副本,必须List通过任一机制对基础类型具有复杂的知识。对于Strings(它在Java中是不变的)(甚至是.NET),您甚至不需要深层副本。对于MySpecialObject,您需要知道如何对其进行深拷贝,而这不是一般操作。

注意:最初接受的答案是Collections.copy在Google中获得最高结果的答案,并且完全没有错,正如评论中指出的那样。



 类似资料:
  • 在 Favorites(收藏夹)中,您可以储存并管理 Flow 网络服务中您最喜欢的训练目标。在手表上,您可以将您最喜爱的目标用作指定目标。有关更多信息,请参见 Flow 网络服务中的训练规划。 Flow 网络服务中的收藏数量没有限制。如果 Flow 网络服务中收藏夹数量超过 100 个,同步时列表中的前 100 个会传输到手表中。您可以通过拖放操作改变我的最爱的顺序。选择您要移动的“我的最爱”,

  • 在 Favorites(收藏夹)中,可在 Flow 网络服务及 Flow 移动应用中储存并管理您收藏的训练目标。您可以将收藏项目在手表上用作预定目标。有关更多信息,请参见在 Flow 网络服务中规划训练。 您可以看到手表中的数目上限。Flow 网络服务中的收藏项目数量没有限制。如果 Flow 网络服务中收藏项目数量超过 100 个,在同步时,列表中的前 100 个收藏项目会传输到手表中。您可以通过

  • 在 Favorites(我的最爱)中,您可以储存并管理 Polar Flow 网络服务中您最喜爱的训练目标。您的 M600 上的 Polar 应用程式一次最多可储存 20 个“我的最爱”。您可通过从Training(训练)下方的运动内容列表向左滑动来找到 Polar 应用程式上“我的最爱”训练目标。如果您的网络服务中收藏的最爱项目数量超过 20 个,则前 20 项会在同步时转移至 Polar 应用

  • 收藏组件,其它应用可以公用 <a href="{:U('user/favorite/do_favorite')}" class="js-favorite-btn" data-title="收藏的内容标题" data-url="收藏的内容的url" data-key="{:sp_get_favorite_key('收藏内容所在表',收藏内容的id)}"></a> <!--如文章收藏:--> <a

  • 问题内容: 我正在从Apache Collections 库中使用。我想对这些值进行排序。 我的方法是使用以下方法检索一个值: 这自然工作正常。 主要问题: 现在,我想知道如何将/转换(不确定哪个是正确的)转换为一个,以便可以对其进行排序? 然后,我打算遍历已排序的对象,该对象应该是有序的,并使用迭代器将位于的列表上的位置从()获取适当的键。 问题答案: 就像Erel Segal Halevi在下

  • 本文向大家介绍js如何把网页加入收藏夹功能?相关面试题,主要包含被问及js如何把网页加入收藏夹功能?时的应答技巧和注意事项,需要的朋友参考一下