【发布时间】:2020-06-13 07:46:05
【问题描述】:
即使从这项任务开始,我也遇到了一些问题,所以我认为你们中的一些人可能会有所帮助。基本上,我得到了一个 .csv 文件,如下例所示,它应该像示例输出一样显示。
这是 .csv 文件的内容:
第一个是 ID,第二个 menuname,第三个是父 ID(如果它是一个数字,它应该是那个数字的孩子),如果 Hidden 为 true,它不应该显示。
ID;MenuName;ParentID;isHidden;LinkURL
1;Company;NULL;False;/company
2;About Us;1;False;/company/aboutus
3;Mission;1;False;/company/mission
4;Team;2;False;/company/aboutus/team
5;Client 2;10;False;/references/client2
6;Client 1;10;False;/references/client1
7;Client 4;10;True;/references/client4
8;Client 5;10;True;/references/client5
10;References;NULL;False;/references
这是输出:
. Company
.... About Us
....... Team
.... Mission
. References
.... Client 1
.... Client 2
- 菜单项应根据它们所属的父项缩进。
- 有些项目已隐藏,不应显示
- 项目应按字母顺序排列
你们能告诉我如何开始以及使用什么数据结构(我想到的是 Stack),但我不确定。谢谢!
这是我目前的代码。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Stack;
public class Main {
static void Function() {
}
public static void main(String[] args) throws IOException {
// write your code here
BufferedReader csvReader = new BufferedReader(new FileReader("Navigation.csv"));
String row;
int parent_id = 0;
Stack stack = new Stack();
while ((row = csvReader.readLine()) != null) {
String[] data = row.split(";");
stack.push(row);
for(int i=0; i<4; i++){
System.out.print(data[i] + " ");
if(data[2].equals("NULL")){
parent_id = Integer.parseInt(data[0]);
}
}
System.out.println(parent_id);
}
csvReader.close();
for(int i=0;i<10;i++){
System.out.println(stack.pop());
}
}
}
【问题讨论】:
-
好的,你从一个 Class 和一个静态 main 方法开始。告诉我们你在哪里卡住了。
-
您好,您可能想要使用树形结构,实际上如图所示here - 您在
LinkUrl列中有类似的路径结构 -
不,我没那么卡哈哈。我已经设法阅读了 cvs 文件和所有内容,但我不知道如何从逻辑角度解决问题。我在上面添加了我的代码。顺便说一句,我尝试了几件事,这并不一定意味着什么。