求助啊,十万火急的面试题,关于FOR循环,高手帮帮忙,谢谢

hx405936929 2012-02-20 04:26:15
有如下结构的数据,写一个循环,输出此数据的树形结构定义。

ID PARENT_ID NAME
-------------------
1 0 A
2 1 B
3 1 C
4 2 D
5 3 E
6 5 F
7 0 G
8 7 H
9 3 I


效果如下:
1-----------A
-------2-----------B
--------------4-----------D
-------3-----------C
-------------- 5-----------E
---------------------6-----------F
--------------9-----------I
7-----------G
-------8-----------H
...全文
615 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
呢喃的歌声1 2012-02-24
  • 打赏
  • 举报
回复
其实这个类是递归输出文件夹目录吧.我记得马士兵说过代码和8L差不多吧.明天上班无聊敲看看
胡小来 2012-02-23
  • 打赏
  • 举报
回复
木有看懂~ 题目没其他信息?
hx405936929 2012-02-21
  • 打赏
  • 举报
回复
怎么用list和map打印出这个树状结构啊,list把每行用一维数组存进去,map存放主键,最后通过传递主键找到相应的id,最后循环打印结果!试题要求是这样的,麻烦大家再帮帮忙!
hx405936929 2012-02-21
  • 打赏
  • 举报
回复
怎么用list和map打印出这个树状结构啊,list把每行用一维数组存进去,map存放主键,最后通过传递主键找到相应的id,最后循环打印结果!试题要求是这样的,麻烦大家再帮帮忙!
hx405936929 2012-02-21
  • 打赏
  • 举报
回复
呵呵,这个答案确实很对,但考试的时候考官提示了一下,说的是:

用list和map打印出这个树状结构,list把每行用一维数组存进去,map存放主键,最后通过传递主键找到相应的层级,最后循环打印结果!试题要求是这样的!不知道可以实现不?

DreamCatcher 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 busyguy 的回复:]

引用 11 楼 hx405936929 的回复:

呵呵,8L高手啊,完全正确,貌似还有一种用List和Map组合也能做的方法,我等会试试



你不是说用String[][]里做么.....为什么又可以用LIST了
[/Quote]
楼主,需求改的太快了!!!
WilliamTau 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hx405936929 的回复:]

呵呵,8L高手啊,完全正确,貌似还有一种用List和Map组合也能做的方法,我等会试试
[/Quote]


你不是说用String[][]里做么.....为什么又可以用LIST了
vcshcn 2012-02-20
  • 打赏
  • 举报
回复
id 和 parentid组成了tree结构,字母是value,图形是按层次显示的应该。只要打出了id和parentid的层次结构,再打出值就可以了
hx405936929 2012-02-20
  • 打赏
  • 举报
回复
7楼的看起来貌似没问题,但没有把ID和Parent_id关联起来,所以结果不一样,只是显示的样式一样
hx405936929 2012-02-20
  • 打赏
  • 举报
回复
确实是树形结构,就是类似于菜单
hx405936929 2012-02-20
  • 打赏
  • 举报
回复
呵呵,8L高手啊,完全正确,貌似还有一种用List和Map组合也能做的方法,我等会试试
不学习就落后 2012-02-20
  • 打赏
  • 举报
回复
好像是论坛发帖的树形结构,可惜不会写
yjflinchong 2012-02-20
  • 打赏
  • 举报
回复
一下子给你说不清。 这种东西做的多了 用数据库查询 或者 java数组 都可以的。
OPPPPOP 2012-02-20
  • 打赏
  • 举报
回复
用递归吧
	static List<String[]>  list=new ArrayList<String[]>();
static {
list.add(new String[]{"1","0","A"});
list.add(new String[]{"2","1","B"});
list.add(new String[]{"3","1","C"});
list.add(new String[]{"4","2","D"});
list.add(new String[]{"5","3","E"});
list.add(new String[]{"6","5","F"});
list.add(new String[]{"7","0","G"});
list.add(new String[]{"8","7","H"});
list.add(new String[]{"9","3","I"});
}
public static void test(String n,int lvl){
String p="";
for(int i=1;i<lvl;i++){
p+="---";
}
for(String[] d:list){
if(d[1].equals(n)){
System.out.println(p+d[0]+"--"+d[2]);
test(d[0],(lvl+1));
}
}
}
public static void main(String[] args) {
test("0",1);
}

效率低下
右领军大都督 2012-02-20
  • 打赏
  • 举报
回复
刚才那个似乎不是你要的,这个应该是:

public static void main(String[] args) {
Map<String, String> parms = new HashMap<String, String>();
String[] names = new String[] { "A", "B", "C", "D", "E", "F", "G", "H",
"I" };
int[][] pairs = new int[][] { { 1, 0 }, { 2, 1 }, { 3, 1 }, { 4, 2 },
{ 5, 3 }, { 6, 5 }, { 7, 0 }, { 8, 7 }, { 9, 3 } };
String line = "-------";
StringBuffer sb = new StringBuffer();
for (int i = 0; i < pairs.length; i++) {
sb.delete(0, sb.length());
String str = parms.get(pairs[i][1] + "") == null ? "" : parms
.get(pairs[i][1] + "");
sb.append(str);
sb.append(pairs[i][0]);
sb.append(line);
sb.append(names[i]);
parms.put(pairs[i][0] + "", str + line);
System.out.println(sb.toString());
}
}

打印效果如下:
1-------A
-------2-------B
-------3-------C
--------------4-------D
--------------5-------E
---------------------6-------F
7-------G
-------8-------H
--------------9-------I
hx405936929 2012-02-20
  • 打赏
  • 举报
回复
比如说2的父ID为1,1的NAME为A
右领军大都督 2012-02-20
  • 打赏
  • 举报
回复
试参考如下:

public static void main(String[] args) {
String[] names = new String[] { "A", "B", "C", "D", "E", "F", "G", "H",
"I" };
int[][] pairs = new int[][] { { 1, 0 }, { 2, 1 }, { 3, 1 }, { 4, 2 },
{ 5, 3 }, { 6, 5 }, { 7, 0 }, { 8, 7 }, { 9, 3 } };
String line = "-------";
StringBuffer sb = new StringBuffer();
for (int i = 0; i < pairs.length; i++) {
sb.delete(0, sb.length());
for (int j2 = 0; j2 < pairs[i][1]; j2++) {
sb.append("-");
}
sb.append(pairs[i][0]);
sb.append(line);
sb.append(names[i]);
System.out.println(sb.toString());
}
}
  • 打赏
  • 举报
回复
mark
jinkezhong 2012-02-20
  • 打赏
  • 举报
回复
真没看出来有什么规律。。。
hx405936929 2012-02-20
  • 打赏
  • 举报
回复
还有半个小时考官就要答案了,哭。。。。。。。
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧