Построение дерева в Java с использованием ввода из текстового файлаJAVA

Программисты JAVA общаются здесь
Anonymous
Построение дерева в Java с использованием ввода из текстового файла

Сообщение Anonymous »

Я пытаюсь построить дерево произвольного размера, используя данные из файла. В файле каждый узел является его собственной строкой, а филиалы разграничиваются определенными ключевыми словами. В настоящее время я читаю файл в список, читая его элемент по элементу и ищу ключевые слова для создания ветвей. Мне трудно понять, как продолжать идти после того, как я начинаю первую ветвь. Ниже приведены мой класс дерева и тестовый входной файл. Я понимаю, что тестовый вход может считаться слишком большим для теста, но фактическое будет иметь много, много моделей. Конечная цель состоит в том, чтобы дерево представляло собой линейку велосипеда Harley Davidson со всеми доступными вариантами для каждого велосипеда после его полностью построенного. Например, один раздел ветви будет выглядеть как: < /p>

Harley(root) -> Model Line -> Model 1 -> color -> c1< /code> < /p>

и т. Д. Для всех других ключевых слов на ветвь. Мой вопрос был бы, если я пойду в правильном направлении в opulate () . Единственный способ, которым я могу придумать это, - это иметь большую, если ... иначе, если ... структура, чтобы проверить каждое ключевое слово последовательно, с циклом в каждом, если ... else Заполнить детей узла этого ключевого слова. Даже если я это сделал, я не знаю, как подпрыгнуть, чтобы сделать следующую ветку, и я знаю, что это ужасно неэффективный способ создания дерева. Какой -нибудь совет? Спасибо.import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Tree
{
private Node root;

public Tree(String rootData)
{
root = new Node();
root.data = rootData;
root.children = new ArrayList();
}

public static class Node
{
private String data;
private Node parent;
private List children;

public Node(){}

public Node(String newNodeData, Node newNodeParent)
{
data = newNodeData;
parent = newNodeParent;
}
}

public void populate() throws IOException
{
//keep track of nodes for jumping up branches quickly
Node curNode = this.root;
Node curModelLine;
Node curModel;

//get the data
List fileData = getData();
int nextDataLine = 0;
while (!fileData.isEmpty())
{
String curLine = fileData.get(nextDataLine);
if (curLine == "model line")
{
curModelLine = new Node(fileData.get(nextDataLine+1), this.root);
this.root.children.add(curModelLine);
}

/*Not sure where to go from here*/

nextDataLine++;
}
}

public static List getData() throws IOException
{
List filedata = new ArrayList();
try
{
FileInputStream in = new FileInputStream("data.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
while((line = br.readLine())!= null)
{
filedata.add(line);
}
br.close();
}catch(Exception e)
{
System.out.println(e);
}
return filedata;
}
}
< /code>

data.txt:

harley
model line
linename1
modelname1
color
c1
c2
engine size
es1
es2
windsheild
w1
w2
lights
l1
l2
tire size
t1
t2
radio
r1
r2
abs
a1
a2
alarm
a1
a2
seat
s1
s2
bags
b1
b2
modelname2
color
c1
c2
engine size
es1
es2
windsheild
w1
w2
lights
l1
l2
tire size
t1
t2
radio
r1
r2
abs
a1
a2
alarm
a1
a2
seat
s1
s2
bags
b1
b2
linename2
modelname1
color
c1
c2
engine size
es1
es2
windsheild
w1
w2
lights
l1
l2
tire size
t1
t2
radio
r1
r2
abs
a1
a2
alarm
a1
a2
seat
s1
s2
bags
b1
b2
modelname2
color
c1
c2
engine size
es1
es2
windsheild
w1
w2
lights
l1
l2
tire size
t1
t2
radio
r1
r2
abs
a1
a2
alarm
a1
a2
seat
s1
s2
bags
b1
b2


Подробнее здесь: https://stackoverflow.com/questions/158 ... -text-file

Вернуться в «JAVA»