【问题标题】:Not able to compare the vector data无法比较矢量数据
【发布时间】:2012-05-15 21:38:15
【问题描述】:

我想将哈希表中存在的向量值与其他向量进行比较,如果向量值相同,我想执行一些操作,否则我必须执行保存,但我总是得到两者中的向量值是不同的。我不能使用泛型,因为我正在处理旧项目。

Hashtable hCompareTable = rUtil.getEventForComparing(dateSel,e.getTimeZone(),listUserEvents);

Enumeration eventsCompareKey = hCompareTable.keys();

  while (eventsCompareKey.hasMoreElements()) {
        String compareKey = (String) eventsCompareKey.nextElement();
        Vector compareEventData = (Vector) hCompareTable.get(compareKey);

        if (compareKey.equals(dateSel)) {
               for (int i = 0; i < compareEventData.size(); i++) {
         EventData eCompare = (EventData) compareEventData.elementAt(i);
                       for (int j = 0; j < object.size(); j++) {
                                 EventData eveObject = (EventData) object.elementAt( j )
                                       if (eveObject.getSummary().equals(eCompare.getSummary())) {
                                             syso("equal")
                                        }
                                       else{
                                          //do something
                                       }

我不知道我比较两个向量中的数据有多糟糕,bot 向量具有 EventData bean 值。

【问题讨论】:

    标签: java collections vector hashtable


    【解决方案1】:

    您总是与object 向量中的lastElement 进行比较有什么原因吗?您正在迭代对象的大小,但始终使用矢量对象的最后一个元素。

    否则,您可能需要将其更改为:

    EventData eveObject = (EventData) object.elementAt( j ); // object.lastElement();
    

    【讨论】:

    • 即使我使用 elementAt(j) 它不会给我正确的结果,我只是更改为 lastElement 来测试@Ravinder
    • @harqs - 添加到您的帖子中,您添加到 objectcompareEventData 向量实例的一些示例数据并打印摘要值以进行调试。
    • object 的摘要数据很少,例如 a,b,c 和 compareEventData 也有相同的。当我调试时,循环有时会进入相等和不相等的状态。
    • @harqs - 向我们展示 a) 您添加的内容,b) sysout 以及每个数据对象的 eventData id 和摘要。 有时不相等不会给我们任何线索。
    【解决方案2】:

    EventData 是否正确覆盖了 Object.equals(Object) 方法?

    【讨论】:

    • 我没有重写equals方法
    • 好的,EventData 类的实现是从哪里来的?是你做的课吗?如果是,我们必须实现equals方法才能使equals方法起作用:当我们执行eventData1.equals(eventData2);时,具有相同内部数据的不同EventData实例必须返回true。或者至少必须将相同的想法应用于 eveObject.getSummary() 中返回的对象。
    • 好的,我已经创建了EventData类,它是一个带有事件信息的bean类,应该如何定义equals方法实现?
    • 可能我们不必重写 EventData.equals()。 EventData.getSummary() 返回的对象类型是什么?它是 String 还是其他由您提供实现的对象?也许这就是我们错过 equals(Object) 方法实现的对象。想和我们分享吗?
    • 公共类 EventData 实现 Persistable { EventData() { } private String startDate;私人字符串开始时间;私有字符串结束时间;私人字符串用户日期;私人字符串结束日期;私有字符串摘要;私有字符串位置;私有字符串时区;私人字符串 startHr;私有字符串 endHr;私人字符串确切开始日期;私人字符串确切结束日期;私人布尔 isAllDay = false;私有字符串频率;私有 int 间隔;私人向量 day_of_week;私人字符串 week_of_the_month;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多