合并和比较两个数组

时间:2013-11-14 02:27:59

标签: java collections arraylist merge

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

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

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

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

这个调用我的方法合并(我试图完成)

collection3.merge(collection1, collection2);

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

这是我制作的,但我知道它不起作用。有一个我将发布的其他方法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; 
}

Annddd

   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;    
   }

1 个答案:

答案 0 :(得分:0)

解决方案应该远远短于此。

我会给你一些提示,因为这个想法并没有提供简单的解决方案,这个问题我很确定是作业。

如果问题是作业添加'家庭作业'标签

<强>提示:

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

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

修改

确保知道Java世界中的Collection是什么(提示:是由几个不同的更具体的类实现的通用接口)。

除非你使用的是真正的数组,否则不要使用单词数组(并且考虑到你的练习提议,你似乎不需要它。)