Wystarczy, że stworzysz iterator:
LinkedHashSet<String> mySet = new LinkedHashSet<String>();
Iterator<String> i = mySet.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
Mam iterator w pętli, która mi porównuje wartości dwóch kolekcji. Za drugim cyklem w pętli, robi takie wrażenie (zdebagowałem), że iterator już nic nie czyta.
Coś robię źle?
Pierwszy raz korzystam z iteratora i domyślam się, że czegoś nie rozumiem.
Pętla:
for(int j = 0; j < lista.size(); j++)
{
for(int i = 0; i < ts.size(); i++)
{
while(it.hasNext())
{
if(lista.get(j).equals(it.next()))
{
licznik++;
}
}
}
}
Cały kod:
public class Patryk
{
static int licznik = 0;
public static void main(String[] args)
{
liczenie();
}
public static void liczenie()
{
File plik = new File("plik");
File plik2 = new File("plik2");
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>();
// Iterator<String> it = ts.iterator();
while((wiersz = czytacz.readLine()) != null)
{
System.out.println(wiersz);
lista.add(wiersz);
}
while((wiersz2 = czytacz2.readLine()) != null)
{
ts.add(wiersz2);
}
Iterator<String> it = ts.iterator();
for(int j = 0; j < lista.size(); j++)
{
for(int i = 0; i < ts.size(); i++)
{
while(it.hasNext())
{
if(lista.get(j).equals(it.next()))
{
licznik++;
}
}
}
}
System.out.println(lista.size() + " rozmiar");
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.out.println(licznik);
}
}