Porownywanie duzych plikow tekstowych

0

Hej mam takie pytanie:
mam silnik ktory costam robi i wypluwa mi plik tekstowy, kazda linia to taki jakby rekord, ktory ma informacje
silnik ma mozliwosc ustalenia liczby watkow, wiec jesli uruchomie go w 1 wartku, i w 5, to wygeneruje mi pliki w ktorych powinny byc takie same rekordy, ale w innej kolejnosci

I zadanie jest takie zeby te pliki porownac czy daly takie same rezultaty

jeden z pomyslow to taki:

  • dla obu list generuje listy ktore trzymaja hasz md5 dla kazdej z linii
  • liczba elementow tych list musi byc rowna
  • biore liste pierwsze, iteruje przez nia i szukam takiego haszu w drugiej liscie, jesli znajdzie to usuwa obydwa (zakladam ze hasze nie moga sie powtorzyc)
  • i tak do konca pierwszej listy, jesli nie znajdzie sie haszu w drugiej liscie albo cos zostanie na koncu to znaczy ze pliki nie sa "rowne"

to moze troche potrwac, moze ktos ma lepsze pomysly jak to zrobic?
pozdrawiam forumowiczow

0

Zamiast porównywać pliki (hashe) możesz je posortować i dopiero potem porównać będziesz miał tylko n porównań pomiędzy plikami i 2nlogn porównań z sortowania w sumie n(1+2logn). Twoja metoda daje jakieś n*n porównań. Zawsze to troszkę szybciej.

0

zrobilem w sumie tak ze hasze zamieniam na stringi i sortuje obie listy, i pozniej iteruje przez pierwsza i szukam za pomoca Collections.binarySearch w tej drugiej danego elementu, i jesi znajde to usuwam
wydaje sie dzialac calkiem spoko ale moze jeszcze jakies inne pomysly?

0

po co porównujesz każdy z każdym, jak masz posortowane tablice?
Masz dwie posortowane tablice, które powinny być takie same. Porównujesz pierwszy z pierwszym, drugi z drugim i tak do pierwszej nierówności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1