问题标签 [java-collections-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
293 浏览

java - 如何知道 Collection 的 Iterator 是否支持 remove()?

所有 Java 都Collection实现Iterable了,因此它们必须提供一个Iterator,它指定一个可选方法remove()。当在remove()上调用时Iterator,它可以抛出一个UnsupportedOperationException

我如何知道CollectionJava 标准库中的 a 是否会在不运行代码的情况下返回Iterator支持的?remove()

当然,我希望这些信息出现在remove()类方法的 Javadoc 中,结果却发现了一堆超类和接口的链接。例如:http ://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#iterator——我也没有找到任何关于链接的说明。

0 投票
4 回答
211 浏览

java - 为什么设置排序附加值?

当我开始添加价值时,Set<Integer>我得到了排序元素。请参考这个例子:

在这里我得到排序Set [0, 1, 2]。我想在添加到generated对象时获得价值。

0 投票
3 回答
764 浏览

java - JVM 空间复杂度详细信息:单链表与双链表

我遇到了一个奇怪的情况,学生(我在这种情况下是助教)必须实现他们自己的单链表 (SLL) 版本,并将其与双链表的 Java 标准库实现进行经验比较。

这就是奇怪的地方:我看到多个学生注意到,与包含相同类型元素的相同数量的 SLL 相比,DLL 配置文件的额外空间利用率大约为 0.5%。数据结构的基本分析一直告诉我,SLL 每个节点有 2 个引用(1 个指向下一个元素,1 个指向包含的值),而 DLL 有 3 个(另外一个指向前一个元素的引用)。换句话说,每个节点的空间使用量增加了 50%(不考虑包含值的大小)。

包含的值主要是整数值对象,所以我认为包含的值的大小在这里并不重要。

是什么导致了这2 个数量级的差异?我不完全确定“JVM/集合库优化”可以涵盖全部差异;否则它必须是一个 JVM/java 标准库优化的地狱。

0 投票
3 回答
2245 浏览

java - java - 如何覆盖hashcode和equals方法以避免在java中的HashSet中添加重复的字符串?

在我的代码中,我有一组 PlacesInfo 对象,即

在这个集合中,我添加了 placeId(字符串)。我需要避免向我的 HashSet 添加重复项。这是我下面的覆盖方法。但是,它仍然在我的集合中添加重复的元素。那么,如何避免这种情况呢?

0 投票
1 回答
1166 浏览

java - 使用 hashmap 的 RockPaperScissors 游戏

我正在为我的编程课制作一个石头剪刀布游戏,教授希望我们使用 ahash map来存储用户的模式,并且times模式发生在hash map.

因此,我创建了一个Pattern包含值数组的类,并在Computer该类中将其存储在hash map. 我打算让程序工作的方式是程序将首先generate a move基于patterns. hash map如果地图是空的,那么它只会生成一个随机移动。然后在用户移动之后,他的移动将被放入一个数组中以形成一个新的模式,并将该模式​​保存到哈希映射中。如果模式已经在地图内,那么它出现的次数将会增加。

预测的移动是通过将用户的最后三个移动与地图中的模式进行比较来做出的,并查看用户接下来可能会抛出哪个移动。因此,如果用户最后 4 步是:R P S R那么程序将采用P S R然后添加R P S并查看这些模式是否在地图中。如果是,它将查看哪一个最有可能发生。然后,如果用户R接下来播放,数组将被更新P S R R并继续模式。

所以初学者模式是从一​​张空地图开始,而老手模式是加载以前保存的地图。但是,我遇到了一些问题:

  1. 在我put将 Pattern 和 times 放入哈希映射之后,当我尝试遍历它并查看它存储在映射中的模式时,我发现所有模式都是相同的,而且这不会发生。该模式假设为:(R -> R P - > R P S如果用户分别扔石头、纸、剪刀)但现在它只显示R P S -> R P S -> R P S. 这可以在 Computer 中的 getSize() 中看到。
  2. NullPointerException我在第四步之后遇到了一个。如果我能解决前面的问题,这个问题可能会解决,但我不知道为什么会这样。
  3. 当我尝试从文件中读取地图时收到警告,所以我只是想知道警告是否可能会干扰程序。
    Unchecked cast from Object to HashMap<Pattern, Integer>

非常感谢我的程序中出现问题的一些帮助或指示。

计算机:

图案:

主要的:

0 投票
1 回答
239 浏览

java - 为什么 jdk 代码风格使用变量赋值并在同一行读取 - 例如。(i=2) < 最大值

我注意到在 jdk 源代码中,更具体地说,在集合框架中,在表达式中读取变量之前,优先分配变量。这只是一个简单的偏好还是我不知道的更重要的东西?我能想到的一个原因是该变量仅在此表达式中使用。

由于我不习惯这种风格,我觉得很难阅读。代码非常简洁。下面你可以看到一个例子取自java.util.HashMap.getNode()

0 投票
2 回答
2748 浏览

java - List 中的 contains() 方法未按预期工作

方法的apicontains()

“如果此列表包含指定的元素,则返回 true。更正式地说,当且仅当此列表包含至少一个元素 e 满足 (o==null ? e==null : o.equals(e)) 时才返回 true。”

我在课堂上覆盖了该equals()方法,但contains()在我检查时仍然返回 false

我的代码

请原谅课程背后的糟糕概念,但我只是在测试对我的概念的理解。

现在当我尝试这个时,false即使 equals 被覆盖,它也会打印

0 投票
1 回答
143 浏览

java - java扩展AbstractMap的跳过列表

我需要在java中实现跳过列表。我知道跳过列表是如何工作的,但我需要扩展 AbstractMap。所以类 SkipList 看起来像

我不明白我需要如何扩展 AbstractMap

0 投票
1 回答
43 浏览

java - 为什么并发包中不会抛出并发修改异常?

像这样的类ConcurrentHashmap不会抛出这个异常;为什么?他们在内部做了什么来避免这个异常?如何防止并发 API 中的所有类出现这种情况?

0 投票
1 回答
1045 浏览

java - Java List 和集合抽象方法不指定主体

我有一个任务,我有一个实现的类java.util.List

在作业表中说我必须实现 public interfaceCollection和 public interface List。我必须实施的方法之一是:

当我尝试像这样实现它时:

当我添加花括号时,它会显示错误

抽象方法不指定主体

如果有人可以帮助我。