Java ListArray auf Duplikate überprüfen und in .txt speichern?

1 Antwort

public static void main(String[] args) throws IOException {
	// ArrayList mit Testdaten erzeugen
	ArrayList<String> original = new ArrayList<String>(Arrays.asList( 
			"Test",
			"Test1",
			"Test",
			"Test2",
			"Test2"
	));
	
	// Neue Arraylist ohne Duplikate erzeugen
	ArrayList<String> ohneDuplikate = new ArrayList<String>(original.stream().distinct().toList());
	
	// In einer .txt Datei speichern
	FileWriter outFile = new FileWriter("C:\\temp\\test.txt");
	outFile.write(String.join("\n", ohneDuplikate));
	outFile.close();

}

Wenn es nicht zwangsweise ArrayList sein müssen, kannst du auch einfach List<String> nehmen. Dann kannst du die beiden "new ArrayList<String>" weglassen.


Killig 
Beitragsersteller
 19.01.2022, 09:28

Ich habe es so gemacht:

package deleteAlgorithmus;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

public class test {

public static void main(String[] args) {

boolean gefunden = false;

if (gefunden == false) {

dateiEinlesen(null, gefunden);

}

}

public static void dateiEinlesen(File neueDatei, boolean gefunden) {

String suche = "test";

String suche2 = "test1";

BufferedReader reader;

String zeile = null;

try {

reader = new BufferedReader(new FileReader("C:\\programme\\Test.txt"));

zeile = reader.readLine();

ArrayList<String> arr = new ArrayList<String>();

while (zeile != null) {

arr.add(zeile.split(" "));

zeile = reader.readLine();

}

System.out.println(arr);

} catch (IOException e) {

System.err.println("Error2 :" + e);

}

ArrayList<String> ohneDuplikat = new ArrayList<String>(arr.join)

FileWriter neueDatei = new FileWriter("C:\\Dokumente\\xxx.txt");

neueDatei.write(String.join(delimiter, elements));

}

public static void duplikatEntfernen(String suche, String suche2, boolean gefunden, File neueDatei,

ArrayList<String> arr) throws IOException {

BufferedWriter schreiben = new BufferedWriter(new BufferedWriter(new FileWriter(neueDatei)));

try {

}

}

}

Allerdings kann ich deines nirgends einfügen, da ich ansonsten Fehlermeldungen bekommen. Bspw. bei toList

0
daCypher  19.01.2022, 10:14
@Killig

Also du willst eine Textdatei einlesen und alle Wörter untereinander in eine neue Datei schreiben, nur halt ohne Duplikate?

public static void dateiVerarbeiten(String fromPath, String toPath) throws IOException {
	// Alle Wörter aus der Quelldatei einlesen (Die Prüfung, ob es die Datei gibt, müsstest du selbst noch einbauen)
	Scanner in = new Scanner(new File(fromPath));
	List<String> allWords = in.tokens().toList();
	in.close();
	
	// Wörter ohne Duplikate in einer neuen Datei speichern
	FileWriter out = new FileWriter(toPath);
	out.write(String.join("\n", allWords.stream().distinct().toList()));
	out.close();
}

Du kannst es auch ohne den Umweg über eine List machen.

public static void dateiVerarbeiten(String fromPath, String toPath) throws IOException {
	Scanner in = new Scanner(new File(fromPath));
	FileWriter out = new FileWriter(toPath);
	out.write(String.join("\n", in.tokens().distinct().toList()));
	in.close();
	out.close();
}

Beim Aufruf musst du halt einfach die Dateinamen angeben.

dateiVerarbeiten("C:\\temp\\quelle.txt", "C:\\temp\\ziel.txt");
0