Cześć. Mam pewne zadanko którego część już zrobiłem ale utknąłem - nawet nie w połowie :/
Oto treść:
Napisać program, który wczytuje plik tekstowy (duży) i wyróżnia w nim słowa (ciągi znaków rozdzielone białymi znakami i znakami punktuacji), przy czym:
a) tworzy kolekcję wszystkich słów z pliku, w taki sposób, by dostęp do np. słowa o numerze 20000 był bardzo szybki,
b) tworzy kolekcję wszystkich słów z pliku posortowaną w kolejności rosnącej,
c) sortuje tę kolekcję w kolejności malejącej,
d) w kolekcji z punktu b), poczynając od końca, dopisuje przed każdym jej słowem kolejne słowo z kolekcji z punktu a) - poczynając od jej początku,
e) wypisuje wynikowe kolekcje z punktu a), b), c), d).
f) wypisuje wszystkie niepowtarzające się słowa w kolejności ich występowania w pliku,
g) wypisuje wszystkie niepowtarzające się słowa w kolejności rosnącej,
h) zlicza liczbę wystąpień wszystkich niepowtarzających się słów w pliku i pokazuje wynik,
i) j.w. ale w taki sposób by łatwo było pokazać wynik posortowany w rosnącej kolejności alfabetycznej; oczywiście ten wynik też nalezy wyprowadzić.
Uwaga: należy użyć właściwych rodzajów kolekcji do każdego z pod zadań.
A tyle udało mi się już zrobić:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Zadanie_3 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new FileReader("plik.txt"));
String linia = null;
List<String> lista = new ArrayList<>();
while ((linia = br.readLine()) != null) {
String[] tab = linia.split(" ");
for (String t : tab) {
lista.add(t);
}
}
System.out.println("SLOWO O INDEKSIE 20 000: " + lista.get(20000));
Collections.sort(lista); //sortuje liste
System.out.println(lista.toString()); // wypisuje liste
Collections.reverse(lista); // odwraca kolejnosc listy
System.out.println(lista.toString()); // wypisuje liste
}
}
Bardzo proszę o pomoc w kolejnych podpunktach.