这是一个比较简单的无限极分类,适用于各种编程语言。
这个原理是 一次性把数据库所有分类读取出来之后再根据pid来排序。
比较简单,好理解。
public static List<Category> cates; private static List<Category> tmpCates = new ArrayList<Category>(); public static void main(String[] args) { init(); List<Category> cList = tree( cates , 0 , 0 ); for (Category c:cList) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < c.getLevel(); i++){ sb.append("--"); } System.out.println( sb.toString() + c.getName() ); } } public static List<Category> tree( List<Category> cs , Integer pid , Integer level ){ for (Category c: cs) { if( c.getParent_id() == pid ){ c.setLevel( level ); tmpCates.add(c); tree( cs , c.getId() , level+1 ); } } return tmpCates; } public static void init(){ cates = new ArrayList<Category>(); Category c1 = new Category(); c1.setId(1); c1.setName("广东"); c1.setParent_id(0); cates.add(c1); c1 = new Category(); c1.setId(2); c1.setName("陕西"); c1.setParent_id(0); cates.add(c1); c1 = new Category(); c1.setId(3); c1.setName("四川"); c1.setParent_id(0); cates.add(c1); c1 = new Category(); c1.setId(5); c1.setName("深圳"); c1.setParent_id(1); cates.add(c1); c1 = new Category(); c1.setId(6); c1.setName("陕西"); c1.setParent_id(2); cates.add(c1); c1 = new Category(); c1.setId(8); c1.setName("成都"); c1.setParent_id(3); cates.add(c1); c1 = new Category(); c1.setId(9); c1.setName("宝鸡"); c1.setParent_id(2); cates.add(c1); }
这个主要的方法就是tree()函数
时间: 2024-10-14 16:28:34