java - 为什么我的 Set 在 Java 编程中充当数组列表?

标签 java set

各位程序员,大家好。

所以我正在创建一个程序,允许用户指定他们想要的保险类型作为保险单的一部分。

由于只有 4 种类型的封面可供选择,我想使用集合或哈希集来跟踪向用户提供的封面类型。

问题是,它似乎没有消除重复项,它像数组列表一样对待它,当我打印出集合的内容时,我得到了不应该在集合中发生的重复项。

这是我用来将创建的保险类型对象传递给保险单类的代码。在实例化它们之后。

CoverType theInsuranceType = new CoverType("Fire",250);
theInsurancePolicy.includeCover(theInsuranceType);

这是我在保险单类中使用的代码,用于跟踪用户购买的保险类型。

    import java.util.*;
    // Class:   InsurancePolicy
    // Purpose: To represent a particular customer's insurance agreement
    public class InsurancePolicy {


            //ArrayList<Product> orderList = new ArrayList<Product>();
        private static int totalPolicyCost;

        private static String name = null;

        private static int price = 0;

        private int amount = 0;

        private static int total = 0, claims = 0;


        private static Set<CoverType> TheCoverType = new HashSet<CoverType>();


        public static boolean includeCover(CoverType which)
        {

            TheCoverType.add(which);
            System.out.println(which.getName()+" Has ben added to your insurance    policy");
            System.out.println(" ");
            System.out.println(" ");
            System.out.println("-----------------------");  
            return true;

        }

我已经将其作为保险单类的一部分来完成,以迭代集合并为用户提取和打印每个对象的值,这就是我获得重复项的地方。

    Iterator<CoverType> iter = TheCoverType.iterator();
        int cash =0;
        while (iter.hasNext())
        {
            CoverType type = iter.next();
             cash =  type.getPrice();
            amount = amount + cash;
            System.out.println("This one Cost.  "+ cash);
                        // int cost = TheCoverType.getPrice().next();
//          if theCover     


        }
        amount = amount+ 100;
        String message = "So all up total cost of the policy is. "+cash; 
        return amount;

任何帮助将不胜感激。

最佳答案

想要放入集合中的对象需要实现 equalshashcode .

即使所有字段都“相等”,除非您重写这些方法,否则您在 java 中也不会获得对象相等 (.equals())。

关于java - 为什么我的 Set 在 Java 编程中充当数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439640/

相关文章:

java - 当一个或多个元素是列表时(maxOccurs=unbounded),是否可以让 JAXB 忽略 <sequence> 中元素的顺序?

java - 使用 MVP 模式

java - 测试 X = A、B 或 C

java - 在 Eclipse 中,如何更改自动突出显示的颜色? (我把我的意思截图了)

java - 在java集合中查找具有相同id的所有最新记录

scala - Scala 中的 SynchronizedSet 和 set 操作

C++0x 问题:恒定时间插入 std::set

组合独立集/汉明距离的算法/近似

java - 有效地迭代多个 Java Map 键集的联合

java - Openshift 上下文路径