首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

面试题:关于String,该怎么处理

2013-04-12 
面试题:关于String首先来看看数据库里的数据(这是一个菜单的数据,含多级):要求从数据库里取出所有数据,并

面试题:关于String
首先来看看数据库里的数据(这是一个菜单的数据,含多级):
面试题:关于String,该怎么处理

要求从数据库里取出所有数据,并组合成以下格式:
面试题:关于String,该怎么处理

组合的规则如下(JSON格式):
[{"ID":1,"PID":0,"TEXT":"首页","CHILDREN":[{"ID":2,"PID":1,"TEXT":"用户管理","CHILDREN":[{"ID":5,"PID":2,"TEXT":"用户列表"},{"ID":6,"PID":2,"TEXT":"添加用户"},{"ID":7,"PID":2,"TEXT":"修改密码"}]},{"ID":3,"PID":1,"TEXT":"资源管理","CHILDREN":[{"ID":8,"PID":3,"TEXT":"资源列表"},{"ID":9,"PID":3,"TEXT":"增加资源"}]},{"ID":4,"PID":1,"TEXT":"权限管理","CHILDREN":[{"ID":10,"PID":4,"TEXT":"权限列表"},{"ID":11,"PID":4,"TEXT":"增加权限"},{"ID":12,"PID":4,"TEXT":"删除权限"}]}]}]

格式化后的JSON格式:


[
    {
        "ID": 1,
        "PID": 0,
        "TEXT": "首页",
        "CHILDREN": [
            {
                "ID": 2,
                "PID": 1,
                "TEXT": "用户管理",
                "CHILDREN": [
                    {
                        "ID": 5,
                        "PID": 2,
                        "TEXT": "用户列表"
                    },
                    {
                        "ID": 6,
                        "PID": 2,
                        "TEXT": "添加用户"
                    },
                    {
                        "ID": 7,
                        "PID": 2,
                        "TEXT": "修改密码"
                    }
                ]
            },
            {


                "ID": 3,
                "PID": 1,
                "TEXT": "资源管理",
                "CHILDREN": [
                    {
                        "ID": 8,
                        "PID": 3,
                        "TEXT": "资源列表"
                    },
                    {
                        "ID": 9,
                        "PID": 3,
                        "TEXT": "增加资源"
                    }
                ]
            },
            {
                "ID": 4,
                "PID": 1,
                "TEXT": "权限管理",
                "CHILDREN": [
                    {
                        "ID": 10,
                        "PID": 4,
                        "TEXT": "权限列表"
                    },
                    {
                        "ID": 11,
                        "PID": 4,
                        "TEXT": "增加权限"


                    },
                    {
                        "ID": 12,
                        "PID": 4,
                        "TEXT": "删除权限"
                    }
                ]
            }
        ]
    }
]


用JAVA语言写出其转换的程序?
[解决办法]
额  用组合模式写了个比较搓的 lz参照下吧  




package com.djk.design.compent;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class MyTest
{
public static void main(String[] args) 
{
//存放PID
Set<String> pidSet =new HashSet<String>();
//这里我们自己直接加入按道理应该是从数据库中读取
pidSet.add("1");
pidSet.add("2");
pidSet.add("3");
pidSet.add("4");
//这边也模拟从数据哭中读取
List<MyCompentMenu> list = new ArrayList<MyCompentMenu>();
MyCompentMenu shouye = new MyMenu("1",null,"首页");
MyCompentMenu userManager = new MyMenu("2","1","用户管理");
MyCompentMenu resourceManager =new MyMenu("3","1","资源管理");
MyCompentMenu roleManager = new MyMenu("4","1","权限管理");
MyCompentMenu user = new MyMenu("5","2","用户列表");
MyCompentMenu addUser = new MyMenu("6","2","添加用户");
MyCompentMenu modifyUser = new MyMenu("7","2","修改用户");
MyCompentMenu resource = new MyMenu("8","3","资源列表");
MyCompentMenu addResource = new MyMenu("9","3","增加资源");
MyCompentMenu role = new MyMenu("10","4","权限列表");
MyCompentMenu addRole = new MyMenu("11","4","增加权限");
MyCompentMenu deleteRole = new MyMenu("12","4","删除权限");
list.add(shouye);
list.add(userManager);
list.add(resourceManager);
list.add(roleManager);
list.add(user);
list.add(addUser);
list.add(modifyUser);
list.add(resource);
list.add(addResource);
list.add(role);
list.add(addRole);
list.add(deleteRole);
Map<String,MyCompentMenu> map = new HashMap<String, MyCompentMenu>();
for(MyCompentMenu menu :list)
{
MyMenu m =(MyMenu) menu;
//如果为空则说明是最高的节点
if(null==m.getpId())
{
map.put(m.getId(), m);
}else
{
//如果父节点不为空则加到父节点下面
if(null != map.get(m.getpId()))
{
//如果加入成功则说明他是叶子节点,不然就是子节点
if(pidSet.add(m.getId()))
{
map.get(m.getpId()).add(new MyMenuItem(m.getId(),m.getpId(),m.getText()));


map.put(m.getId(), new MyMenuItem(m.getId(),m.getpId(),m.getText()));
}else
{
map.get(m.getpId()).add(m);
map.put(m.getId(), m);
}
}
}
}
map.get("1").print();
}
}

/**
 * 组件菜单
 * @author djk
 *
 */
abstract class MyCompentMenu
{
//增加组件
abstract void add(MyCompentMenu compentMenu);

//减少组件
abstract void remove(MyCompentMenu compentMenu);

//打印方法
abstract void print();

}

/**
 * 叶子节点 
 * @author djk
 *
 */
class MyMenuItem extends MyCompentMenu
{
//编号
private String id;
//父节点编号
private String pId;
//内容
private String text;

public MyMenuItem(String id,String pId,String text)
{
this.id = id;
this.pId = pId;
this.text = text;
}

@Override
void add(MyCompentMenu compentMenu) {
}

@Override
void print() {
System.out.println("叶子节点:内容是:"+text+","+"id:"+this.id+","+"pid:"+this.pId);
}

@Override
void remove(MyCompentMenu compentMenu) {

}
}

/**
 * 子节点
 * @author djk
 *
 */
class MyMenu extends MyCompentMenu
{
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}

//编号
private String id;
//父节点编号
private String pId;
//内容
private String text;

public List<MyCompentMenu> getList() {
return list;
}
public void setList(List<MyCompentMenu> list) {
this.list = list;
}

private List<MyCompentMenu> list=null;

public MyMenu(String id,String pId,String text)
{
this.id = id;
this.pId = pId;
this.text = text;
list = new ArrayList<MyCompentMenu>();
}
@Override
void add(MyCompentMenu compentMenu) {
list.add(compentMenu);
}

@Override
void print() {

System.out.println("我是菜单,我的名字是:"+this.text+","+"id:"+this.id+","+"pid:"+this.pId);
Iterator<MyCompentMenu> iterator =list.iterator();
while(iterator.hasNext())
{
MyCompentMenu menu = iterator.next();
menu.print();
}
}

@Override
void remove(MyCompentMenu compentMenu) {

}

}





运行结果:
我是菜单,我的名字是:首页,id:1,pid:null
我是菜单,我的名字是:用户管理,id:2,pid:1
叶子节点:内容是:用户列表,id:5,pid:2
叶子节点:内容是:添加用户,id:6,pid:2
叶子节点:内容是:修改用户,id:7,pid:2
我是菜单,我的名字是:资源管理,id:3,pid:1
叶子节点:内容是:资源列表,id:8,pid:3
叶子节点:内容是:增加资源,id:9,pid:3
我是菜单,我的名字是:权限管理,id:4,pid:1
叶子节点:内容是:权限列表,id:10,pid:4
叶子节点:内容是:增加权限,id:11,pid:4
叶子节点:内容是:删除权限,id:12,pid:4


热点排行