java - 袋子实现,将项目添加到袋子中,不允许重复
问题描述
我正在尝试在 java 中实现一个 ADT MarblesBag,其中包的元素是弹珠,每个弹珠都有两个属性:颜色和重量(所以每个弹珠都是三元组(项目名称、颜色、重量)。我正在努力实现一个方法,将大理石添加到袋子中,并为重复的大理石抛出异常。这是我的代码,
public void add(Item item) {
Node<Item> previousnode = first;
first = new Node<Item>();
first.item = item;
first.next = previousnode;
n++;
如何为方法中的重复项添加例外?
解决方案
这将需要实现和调用方法来检查您的集合中是否已经存在新元素。此方法可能应该在开始时调用,public void add(Item item)
并且应该遍历当前存在的所有元素。方法签名可以是:
private void isAlreadyPresent(Item item) throws ItemAlreadyPresentException{
.. go through all elements and compare with *item*
.. if match found
throw new ItemAlreadyPresentException();
.. if there is no match then finish method
}
然后你可以在实际添加新元素之前使用它:
public void add(Item item) {
try {
isAlreadyPresent(item);
} catch (ItemAlreadyPresentException e) {
.. do not add element
return;
}
Node<Item> previousnode = first;
...
n++;
}
}
Java 已经拥有不允许重复元素的 Collection - 它被称为Set。
推荐阅读
- python - if条件后的随机输出结果 - python
- css - 为什么 Svelte 不将标签限定在一个类下,而是使用单独的 tag.class 来设置组件的样式?
- azure - Azure Front Door 每秒轮询后端池状态数次
- api - 只有在 drupal 7 中手动清除缓存后才能看到正确的投票结果计数
- asp.net - 我可以在 Swagger UI 中手动更改方法图标(锁定/解锁)吗?
- java - Android - 如果语句被忽略和绕过
- python - DataClass 是否适合替换字典?
- java - 在 Flutter 中配置 local_auth 插件
- arrays - 如何从Java中的放心JSON响应中检索值“不允许空值”
- javascript - 我想检查firefox窗口是否处于活动状态或空闲状态