首页 > 解决方案 > 袋子实现,将项目添加到袋子中,不允许重复

问题描述

我正在尝试在 java 中实现一个 ADT MarblesBag,其中包的元素是弹珠,每个弹珠都有两个属性:颜色和重量(所以每个弹珠都是三元组(项目名称、颜色、重量)。我正在努力实现一个方法,将大理石添加到袋子中,并为重复的大理石抛出异常。这是我的代码,

public void add(Item item) {
        Node<Item> previousnode = first;
        first = new Node<Item>();
        first.item = item;
        first.next = previousnode;
        n++;

如何为方法中的重复项添加例外?

标签: javaduplicatesmultisetbag

解决方案


这将需要实现和调用方法来检查您的集合中是否已经存在新元素。此方法可能应该在开始时调用,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


推荐阅读