-1

如何比较两组不同数据中的每个元素,然后将其中的某些元素合并到一组新数据中?

下面是关于我的方法的一些信息。注意: 不使用 java.lang.Collections

一个类中,我有这些调用初始化程序:

    BookCollection collection1 = new BookCollection(100); 
    BookCollection collection2 = new BookCollection(50); 
    BookCollection collection3 = new BookCollection(150); 

这个对我的方法合并的调用(我正在尝试完成)

collection3.merge(collection1, collection2);

在另一个类中,我的方法merge试图比较两组数据(集合 1 和 2),如果找到相等的元素,则仅将这些元素中的 1 个添加到新集合中。否则,将所有不相等的元素添加到新集合中。

这是我所做的,但我知道它不起作用。有一个我将发布的其他方法 findBook 的调用。

   public BookCollection merge(BookCollection c1,BookCollection c2){             
   //use this. operator to grab other vars
   BookCollection cNew = new BookCollection(cNew);
      for(String s1: c1)
      if (s1.equals(c2)) {
         cNew = c1;
      }
      cNew = c1 + s1; 
}

安达

   private int findBook(String isbn){
   // iterate all the Book elements in the collection array
      for(int i = 0; i <= collection.length; i++){
   // check if the current book isbn matches the one provided argument
         if (collection[i].getIsbn().equals(isbn))
            return i;
    }
    return -1;    
   }
4

1 回答 1

0

解决方案应该比这短得多。

我会给你一些提示,因为这个想法不是给出简单的解决方案,我很确定这个问题是家庭作业。

如果问题是作业添加“作业”标签

提示:

  • 您的主要方法没有任何循环。如何迭代集合?
  • 作为对象的书籍应该有一个equals方法。如果该方法正确实现(您应该定义什么是方法开始等于另一个),那么您可以比较 b1.equals(b2)
  • 集合有contains方法检查它是否包含(通过使用等于)其他书
  • Math.min方法计算两个整数或双精度之间的最小值(有两个版本)
  • 另外,为了完整起见,如果您的收藏属于某种类型,您的书籍应该以与 equals 兼容的方式实现 hashCode(但我猜您还不知道什么是哈希,并且您不会使用那种收藏)

所以首先:设计一个算法。越简单越好。用简单的英语。然后尝试实现它。如果您尝试编写以前经过深思熟虑的概念,您会发现代码更加简单和整洁。

编辑:

确保了解CollectionJava 世界中的 a 是什么(提示:是由几个不同的更具体的类实现的通用接口)。

除非您使用的是真正的数组,否则不要使用单词数组(并且根据您的练习建议,您似乎不需要它)。

于 2013-11-14T03:07:06.597 回答