说明:前段时间写了一个二级菜单,需要从后台获取一个二维数组,子菜单的数组需要一级菜单的id,由于是异步请求,所以可能出现一级菜单数据和二级菜单数据对不上,当然了您可以使用同步请求网络数据或一个请求结束后使用递归(但这样不太好)。
代码简介:
1.2个JavaBean,一个父级菜单bean(BaseBean),一个子菜单bean(ItemListBean);
2.一个测试java文件包括三个方法,初始化子菜单list,初始化父级菜单list和排序方法;
3.通过比较BaseBean的id和ItemListBean的father_name是否相等进行排序;
代码部分:
BaseBean代码:
public class BaseBean { private int id; private String name; private List<ItemListBean> beanList; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<ItemListBean> getBeanList() { return beanList; } public void setBeanList(List<ItemListBean> beanList) { this.beanList = beanList; } @Override public String toString() { return "BaseBean{" + "id=" + id + ", name='" + name + '\'' + ", beanList=" + beanList + '}'; } }
ItemListBean代码:
public class ItemListBean { private int id; private String name; private String father_name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFather_name() { return father_name; } public void setFather_name(String father_name) { this.father_name = father_name; } @Override public String toString() { return "ItemListBean{" + "id=" + id + ", name='" + name + '\'' + ", father_name='" + father_name + '\'' + '}'; } }
测试Java文件部分
public class DyadicArray { public static void main(String[] args) { sortList(); } /** * 排序,两层for循环生产新的的beanList */ private static void sortList() { List<BaseBean> baseBeanList = initList();//原来list List<BaseBean> beanList = new ArrayList<>();//排序后的list for (int i = 0; i < baseBeanList.size(); i++) { BaseBean baseBean = baseBeanList.get(i); BaseBean baseBean2 =new BaseBean();//添加到新的list for (int j = 0; j < baseBeanList.size(); j++) { BaseBean baseBean1 = baseBeanList.get(j); //获取子菜list中一个father_name即可, if (baseBean.getId() == Integer.parseInt(baseBean1.getBeanList().get(0).getFather_name()) ){ baseBean2.setId(baseBean.getId()); baseBean2.setName(baseBean.getName()); baseBean2.setBeanList(baseBean1.getBeanList()); beanList.add(i,baseBean2);//添加的新的list并设置位置 break; } } } System.out.print(beanList); } /** * 初始化父级菜单list * @return 混乱的二维数组 */ private static List<BaseBean> initList() { List<BaseBean> baseBeanList = new ArrayList<>(); for (int i = 0; i < 3; i++) { BaseBean baseBean = new BaseBean(); baseBean.setId(i); baseBean.setName("father" + i); DyadicArray dyadicArray = new DyadicArray(); //生成子菜单list List<ItemListBean> itemListBeans = dyadicArray.itemListBeans(2 - i); baseBean.setBeanList(itemListBeans); baseBeanList.add(baseBean); } // System.out.print(baseBeanList); return baseBeanList; } /** *根据父id生产子list,模拟异步请求生成的二维数组可能出现混乱的情况 * @param father_id * @return 子菜单list */ private List<ItemListBean> itemListBeans(int father_id) { List<ItemListBean> beanList = new ArrayList<>(); for (int i = 0; i < 3; i++) { ItemListBean bean = new ItemListBean(); bean.setId(i); bean.setFather_name(String.valueOf(father_id)); bean.setName("child" + i); beanList.add(bean); } return beanList; } }