2013-11-14 5 views
-1

Как сравнить каждый элемент в двух разных наборах данных, а затем объединить некоторые элементы из них в новый набор данных?Слияние и сравнение двух массивов

Дополнительная информация о моих методах ниже. Примечание: Не используя java.lang.Collections

В один класс У меня есть эти вызовы инициализаторами:

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

И этот призыв к моему методу слияния (который я пытаюсь закончить)

collection3.merge(collection1, collection2); 

Anndd в другом классе мой мето d 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; 
} 

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

ответ

0

Решение должно быть намного короче, чем это.

Я дам вам несколько советов, потому что идея не дает простых решений, и этот вопрос я уверен, что это домашнее задание.

Если вопрос домашнее задание добавить 'домашняя работа' тег

Советы:

  • Ваш основной метод не имеет никакого цикла. Как собираются перебирать коллекции?
  • Книги как объекты, они должны иметь метод equals. Если этот метод был правильно реализован (вы должны определить, какой метод начинать равен другому), то вы можете сравнить b1.equals (b2)
  • В коллекции есть метод contains, чтобы проверить, содержит ли он (с помощью равных) другую книгу
  • Math.min метод вычисляет минимум между двумя целыми числами или двойниками (есть две версии)
  • Кроме того, чтобы быть полным, если ваши коллекции определенного типа ваших книги должны реализовать хэш-код совместимым способа с равными (но моим предположим, вы еще не знаете, что такое хеширование, и вы не будете использовать такие коллекции)

Итак, в первую очередь: разработать алгоритм. Чем проще, тем лучше. На простом английском языке. Просто попробуйте реализовать это. Вы увидите, что код намного проще и аккуратен, если вы попытаетесь запрограммировать предыдущую концепцию хорошо продуманной.

Edit:

Обеспечить, чтобы знать, что такое Collection в Java мире (совет: это общий интерфейс, реализованный несколько различных более конкретных классов).

И не используйте массив слов, если вы не используете реальные массивы (и, учитывая ваше предложение по упражнению, оно вам не кажется нужным).

+0

Я конвертирую коллекции c1 и c2 в строки, а затем передаю их методу findBook, который выполняет итерацию по ним и возвращает целое число, которое затем присваивается значениям index1/2. Я написал для итерации, но получаю эту ошибку: error: _int не может быть разыменован, вы можете проверить мое редактирование? – jSeesFor3ver

+0

Нет. Не вдавался в детали кода, но кажется слишком сложным. Поверь мне. Вам не нужны сумасшедшие преобразования из книги в строку, чтобы найти int и т. Д. И, если вы хотите создать список с книгами в BOTH коллекциях ввода, вы должны перебирать один из списков и пытаться найти, являются ли эти элементы в другой коллекции или нет. Важнее. Вы передаете книгу методу слияния. Какой класс коллекции? Это элемент ONE внутри коллекции. Вы должны пройти Collection , Список или Установить или что-то в этом роде. Вот почему я говорю вам думать снова и снова. – helios

+0

Что я имел в виду: возможно, у вас проблемы с отображением того, что вы хотите сделать, и кода, необходимого для этого. Но первая проблема заключается в поиске того, как представить вашу проблему и что вы хотите делать с вашими объектами (абстрактным образом). То, что мы называем алгоритмом. Вы даже не решили, как представлять коллекцию (ваш код даже не упоминает о какой-либо коллекции, списке или наборе). И WTF - это тот двойник, который вы возвращаете? Разве вы не должны возвращать другую коллекцию? – helios

Смежные вопросы