java简单的无限极分类

这是一个比较简单的无限极分类,适用于各种编程语言。

这个原理是 一次性把数据库所有分类读取出来之后再根据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

java简单的无限极分类的相关文章

PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂

当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了. 比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了. id    name          pid      sort1     PHP           0   

PHP无限极分类详谈

当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了. 比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了. id    name          pid      sort1     PHP           0       1

C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): 1 /// <summary> 2 /// 无限极节点类 3 /// </summary> 4 public class AdminUserTree 5 { 6 /// <summary> 7 /// 节点信息 8 /// </summary> 9 public int

谈一次php无限极分类的案例

作者:白狼 出处:http://www.manks.top/php_tree_deep.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.原文有图片. 平时开发中或多或少不可避免会遇到无限极分类的问题,因为效率.逻辑等问题也一直使这类问题比较尖锐.今天我们以yii2框架为基础,栏目无限极为例,对这个问题进行一个简单的处理. 首先我们有一张栏目数据表 tree 表结构如下图(原文有图) 看上去表结构很简单. 我们插入几

PHP实现无限极分类的两种方式

无限极分类说简单点就是一个类可以分成一个分子类,然后一个子类又可以分另一个子类这样无限分下去,就是好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一个文件夹,PHP要实现无限极分类有两种常用的做法,递归和引用算法. 数据表(两种实现方式都是一样的数据表): 建数据表的时候,增加一个字段(一般用pid作为字段名)用来区别自己所属的分类,字段值为其父级的主键id,0为一级分类. 1.引用算法: (1)获取一级分类 获取pid为0的数据,返回给模板,循环展示. 循环展示新增id属性,其

thinkphp无限极分类

这里首先介绍一下,什么是无限极分类? 无限极分类简单点说就是将一个类分成多个子类,然后一个子类又可以分另外多个子类这样无限分下去,就好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样 那用Thinkphp如何实现无限分类的呢? 下面看一下分类结果: 下面给出实例代码: 1.先创建Model文件并在里面定义两个方法,如下: <?php namespace app\admin\model; use think\Model; class C

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo

PHP无限极分类

概述 ??在实际工作中,经常要用到无限极分类.如导航表等等.到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了.下面介绍两种无限极分类:递归,使用引用 数据准备 //初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序) $data[1] = array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1

php递归无限极分类

递归无限级分类有几种形式,我这里只举例比较常用的三种: 第一种:返回有排序的数组: <?php $data = array( 1 => array( 'id' => 1, 'pid' => 0, 'user_name' => 'one', ), 2 => array( 'id' => 2, 'pid' => 1, 'user_name' => 'two', ), 3 => array( 'id' => 3, 'pid' => 1, '