I want to know if you can use TableColoum like Map?
I want to take a file > read the file > scan all characters > map the characters to the FIRST column > map the number of characters to the SECOND column.
Is it possible to do with TableColoum?
Best regards
Alex
EDIT!: Codes here:
package sample;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
import javafx.util.Callback;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main extends Application {
Map<Character, Integer> countCharacters = new TreeMap<Character, Integer>();
Scanner scanner = null;
@Override
public void start(Stage primaryStage) throws Exception {
// sample data
int total = 0;
try {
scanner = new Scanner(new File("MY_FILE_PATH_HERE"), "utf-8");
while (scanner.hasNext()) {
char[] chars = scanner.nextLine().toLowerCase().toCharArray();
for (char character : chars) {
if (Character.isLetter(character)) {
if (countCharacters.containsKey(character)) {
countCharacters.put(character, countCharacters.get(character) + 1);
} else {
countCharacters.put(character, 1);
}
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (scanner != null) {
scanner.close();
}
}
if (!countCharacters.isEmpty()) {
for (Map.Entry<Character, Integer> entry : countCharacters.entrySet()) {
total += entry.getValue();
}
for (Map.Entry<Character, Integer> entry : countCharacters.entrySet()) {
System.out.println(entry.getKey() + ":\t" + entry.getValue() + " \t: \t " + percentCount(entry.getValue(), total) + "%");
}
if (!countCharacters.isEmpty()) {
for (Map.Entry<Character, Integer> entry : countCharacters.entrySet()) {
total += entry.getValue();
}
for (Map.Entry<Character, Integer> entry : countCharacters.entrySet()) {
System.out.println(entry.getKey() + ":\t" + entry.getValue() + " \t: \t " + percentCount(entry.getValue(), total) + "%");
}
TableColumn<Map.Entry<Character, Integer>, Character> column1 = new TableColumn<>("Key");
for (Map.Entry<Character, Integer> entry : countCharacters.entrySet())
{
column1.setCellValueFactory(new PropertyValueFactory<Map.Entry<Character, Integer>, Character>("Test"));
}
TableColumn<Map.Entry<Character, Integer>, Character> column2 = new TableColumn<>("Value");
for (Map.Entry<Character, Integer> entry : countCharacters.entrySet())
{
column2.setCellValueFactory(new PropertyValueFactory<Map.Entry<Character, Integer>, Character>(""));
}
ObservableList<Map.Entry<Character, Integer>> items = FXCollections.observableArrayList(map.entrySet());
final TableView<Map.Entry<Character, Integer>> table = new TableView<>(items);
table.getColumns().setAll(column1, column2);
primaryStage.setTitle("Alice");
primaryStage.setScene(new Scene(table, 300, 275));
primaryStage.show();
}
}
public static float percentCount(float number, int total)
{
return (number / total) * 100;
}
public static void main(String[] args) {
launch(args);
}
}