Cześć
Zadałem już parę pytań na forum odnośnie kolekcji i finalnie chciałem napisać program, który pobiera dane z pliku txt i zlicza powtórzenia (docelowo mają być to nazwiska).
Ma to na celu nauczenie się posługiwania kolekcjami i przy okazji wyjściem/wejściem na pliku txt.
Mam problem, bo nie wiem jak rozwiązać kwestię przypisywania ilości powtórzeń do elementów w kolekcji. Napisałem takie coś:
public class Duplikaty
{
static int licznik = 0;
static LinkedHashSet<String> lista2 = new LinkedHashSet<String>();
public static void main(String[] args)
{
liczenie();
}
public static void liczenie()
{
File plik = new File("test.txt");
File plik2 = new File("test.txt");
try
{
BufferedReader czytacz = new BufferedReader(new FileReader(plik));
BufferedReader czytacz2 = new BufferedReader(new FileReader(plik2));
String wiersz = null;
String wiersz2 = null;
ArrayList<String> lista = new ArrayList<String>();
LinkedHashSet<String> ts = new LinkedHashSet<String>();
while((wiersz = czytacz.readLine()) != null)
{
// System.out.println(wiersz);
lista.add(wiersz);
}
while((wiersz2 = czytacz2.readLine()) != null)
{
// System.out.println(wiersz2);
ts.add(wiersz2);
}
Iterator<String> it = ts.iterator();
for(int i = 0; i < lista.size(); i++)
{
it = ts.iterator();
while(it.hasNext())
{
if(lista.get(i).equals(it.next()))
{
lista2.add(lista.get(i) + " " + licznik++);
}
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
for(String temp : lista2)
{
System.out.println(temp);
}
}
}
Plik txt to:
test1
test2
test3
test4
test5
test1
Wynik jaki dostaję to:
test1 0
test2 1
test3 2
test4 3
test5 4
test1 5
Rozumiem czemu się tak dzieje ale nie wiem jak to poprawić, żeby otrzymać wynik podobny do tego:
test1 2
test2 1
test3 1
test4 1
test5 1
Może podchodzę kompletnie źle do tematu ale takie coś udało mi się napisać.
Chętnie przyjmę każdą krytykę i pomoc.