Arrays.asList 给出 UnsupportedOperationException [重复]

2024-02-05

The List由返回Arrays.asList不能通过使用诸如add or remove。但如果你把它传递给Collections.sort方法,它可以毫无问题地对数组进行排序(我预计会出现异常)。这似乎是一种非常不一致的行为。那么允许的操作有哪些List,由返回asList方法?

List<Integer> list = Arrays.asList(5,7, 10 , 8,9);
list.remove(2);//Exception

Collections.sort(list);//Ok, No Exception Sort...
System.out.println(list);

我在文档中找不到任何线索。

Edit:是的,我明白为什么它不支持remove or add。那么它怎么支持排序呢?


Arrays.asList返回固定大小List由数组支持。所以remove and add不支持。set是支持的。你可以看看这个List就好像它的行为与数组完全相同。数组具有固定长度。不能添加或删除元素,但可以为数组的索引赋值,这相当于set的方法List。并且您可以对数组进行排序。

Collections.sort(list)不改变的大小List,所以可以对固定大小的列表进行排序。排序所需的一切List是交换元素List。以此目的set(index,element)足够了。

所有这些信息都可以在 Javadoc 中找到Arrays :

/**
 * Returns a fixed-size list backed by the specified array.  (Changes to
 * the returned list "write through" to the array.)  This method acts
 * as bridge between array-based and collection-based APIs, in
 * combination with {@link Collection#toArray}.  The returned list is
 * serializable and implements {@link RandomAccess}.
 *
 * <p>This method also provides a convenient way to create a fixed-size
 * list initialized to contain several elements:
 * <pre>
 *     List&lt;String&gt; stooges = Arrays.asList("Larry", "Moe", "Curly");
 * </pre>
 *
 * @param a the array by which the list will be backed
 * @return a list view of the specified array
 */
 public static <T> List<T> asList(T... a)

如果你看一下一个实现Collections.sort,您会发现它实际上对数组进行了排序。唯一的List它需要修改的方法List is set of the List's ListIterator,这称为List's set(index,element)方法。

public static <T extends Comparable<? super T>> void sort(List<T> list) {
  Object[] a = list.toArray();
  Arrays.sort(a);
  ListIterator<T> i = list.listIterator();
  for (int j=0; j<a.length; j++) {
      i.next();
      i.set((T)a[j]);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arrays.asList 给出 UnsupportedOperationException [重复] 的相关文章

随机推荐

  • getAttribute() 和 getParameter() 之间的区别

    有什么区别getAttribute and getParameter 内的方法HttpServletRequest class getParameter 返回http请求参数 这些从客户端传递到服务器 例如http example com
  • 应用商店中的应用大小比上传的应用大小大 7 倍

    当我将 iOS 应用程序上传到应用程序商店时 ipa 大小为32 MB 现在我的应用程序上线了 现在我在应用程序商店上检查了我的应用程序大小 它显示237 MB在 iPhone 6 上 它显示252 MB当我在电脑上的浏览器中打开应用程序链
  • 如何在 SVN 中进行独占结帐?

    我正在寻找一种从 SVN 进行独家结帐的方法 有没有办法在检出文件时自动锁定文件 如果一个用户进行独占签出 然后另一个用户对同一文件进行签出 我如何向第二个用户生成某种通知或即时消息 表明该文件已锁定 您可以添加属性或自动属性svn nee
  • dplyr 计数变量的一个特定值的数量

    假设我有一个这样的数据集 id lt c 1 1 2 2 3 3 code lt c a b a a b b dat lt data frame id code I e id code 1 1 a 2 1 b 3 2 a 4 2 a 5 3
  • 在 Python 中验证 (X)HTML

    验证文档是否遵循某个 HTML 版本 最好是我可以指定 的最佳方法是什么 我希望能够知道失败发生在哪里 就像在基于 Web 的验证器中一样 但在本机 Python 应用程序中除外 PyTidyLib http countergram git
  • 将x和y轴添加到所有facet_wrap

    通常希望尽量减少绘图中的墨水 我有一个多面情节 facet wrap 并希望去除尽可能多的墨水但保持可读性 我已经按照我的意愿进行了设置 除了 x 轴和 y 轴不存在于面 子图 中 除非位于最左侧或底部 去除了这么多墨水后 我相信眼睛需要这
  • 重载解析算法中如何确定歧义?

    我试图理解重载解析方法 为什么这是模棱两可的 void func double int int double void func int double double double void main func 1 2 3 4 但这不是吗 v
  • XCode 警告:“/* 在块注释内”

    我真的很喜欢通过这样注释来临时启用和禁用代码部分 some code 注意 代替 在最后 然而 XCode 不断向我发出警告 within block comment 有没有办法 自定义禁用 特定警告 为什么 我会告诉你为什么 因为我可以轻
  • 如何将 std::max_element 用于结构

    我想用std max element对于结构体VAR T基于id元素 但我无法将起始点和停止点与该函数的输入链接起来 typedef struct VAR int id char b 16 VAR int a 0 strcpy b VAR
  • 如何从警报框中获取文本?

    我需要从警报框中获取文本 我没有足够的声誉来上传图像 所以我上传代码而不是图像 有没有办法使用 Greasemonkey 在 Chrome 上 从弹出窗口 获取文本 查询不清楚 但是如果我理解正确的话 页面上有一个 JavaScript 会
  • JRHtmlExporter 现已弃用。如何定义图片保存路径?

    The JRHtml导出器类现在已弃用 JasperReports 6 x 我将这个类的用法替换为Html导出器 但我找不到等效的函数来替换exporter setParameter JRHtmlExporterParameter IMAG
  • Summernote 图像上传和替代方案不起作用

    我在我的网站上使用 Summernote 编辑器 并使用其网站上提到的 Click2edit 方法实现它here http www usrtriton nl assets bower summernote example html 然而 如
  • 在背景中绘图

    我有一个 IOS 应用程序 需要更新视图以响应用户或外部事件 绘制时间可以很短也可以很长 几秒 具体取决于视图中的内容 现在 绘图是在视图的 drawRect 方法中进行的 当绘图很长且存在大量用户交互时 应用程序将变得无响应 当需要更新时
  • 运行 liquibase 时出现值“CONTINUE”不是构面有效错误

    当我尝试运行以下命令时 java jar liquibase 3 4 1 jar classpath postgresql 9 2 1004 jdbc4 jar logLevel severe url jdbc postgresql loc
  • 是否可以更改 Postgres 中列的自然顺序?

    是否可以更改 Postgres 8 1 中列的自然顺序 我知道你不应该依赖列顺序 它不是基本的到我正在做的事情 我只需要它使一些自动生成的东西以更令人愉悦的方式出现 以便字段顺序从 pgadmin 通过后端一直到前端匹配 实际上 您可以直接
  • 复选框的表单模型绑定

    我正在使用 Laravel 4 1 在我的应用程序中我需要显示一个带有预填充复选框的表单 但我尝试使用表单模型绑定来做到这一点 但它不起作用 Form model user array route gt settings notify di
  • 如何在 Python 中将自定义类设为集合

    我有 Matlab 背景 在 matlab 中 我可以创建一个类定义 然后创建一个对象数组 我可以轻松地使用索引取消引用每个对象 此外 当我从对象数组 没有索引 调用方法时 我可以访问数组中的所有对象 例如 假设 myNewClass 具有
  • DotNetOpenAuth 可在哪些 .NET 框架上使用?

    大多数 全部 OAuth 资源 有关协议和代码库的信息 以便在您自己的应用程序中轻松使用它们 人们似乎在互联网上找到的资源似乎假设您正在使用它的应用程序是一个 Web 应用程序 不过我想开始使用 OAuth我的 Windows Mobile
  • 使用jdatabase更新数据库中的记录

    如何使用数据库更新 Joomla 3 中的记录 这是我到目前为止所拥有的 db JFactory getDBO query db gt getQuery true query gt update test AS h query gt set
  • Arrays.asList 给出 UnsupportedOperationException [重复]

    这个问题在这里已经有答案了 The List由返回Arrays asList不能通过使用诸如add or remove 但如果你把它传递给Collections sort方法 它可以毫无问题地对数组进行排序 我预计会出现异常 这似乎是一种非