java怎样将有序数组的变为无序的_将无序的数据数组集合转化为有序的树形数组集合...

将无序的数据数组集合转化为有序的树形数组集合,这种工具使用范围:针对表中有上下级关系,pid,sortindex

1.[代码]JTree.java

//

// Copyright 2014 All Rights Reserved //

//

/* =======================================================================

* 系统名 :

* 子系统名 :

* Class名 : JTree.java

* 概要 : 将无序的数据数组集合转化为有序的树形数组集合,这种工具使用范围:针对表中有上下级关系,pid,sortindex

* 改版履历 :

* 版本 日期 作者名 备注

* 1.0.0 2015年10月23日 郭恩洲 初次作成

* ======================================================================= */

package com.common;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

public class JTree {

private List> initBeans = new ArrayList>();

private String sign = "-";

public String getSign() {

return sign;

}

public void setSign(String sign) {

this.sign = sign;

}

/**

* @param isSort 是否排序,如果你列表是有序的,建立false,提供性能

* @param rootId 根节点

* @return

*/

public List> start(Boolean isSort, Serializable rootId) {

if(rootId == null){

rootId = "";

}

List> arrayBeans = new ArrayList>();

JTreeNode treeRoot = getTree(initBeans, isSort, rootId);

List> treeList = treeRoot.getChildren();

return treeConvertList(treeList, 1, arrayBeans);

}

public JTreeNode getTree(List> beans, boolean isSort,

Serializable rootId) {

List> sortBeans = beans;

if (isSort) {

sortBeans = sort(beans);

}

JTreeNode treeRoot = tree(sortBeans, rootId, null);

return treeRoot;

}

/**

* 采用冒泡对数组集合进行排序

*

* @param beans

* @return

*/

private List> sort(List> beans) {

JTreeNode temp;

int size = beans.size();

for (int i = 0; i < size - 1; i++) {

for (int j = i + 1; j < size; j++) {

if (beans.get(i).getSortId() > beans.get(j).getSortId()) {

temp = beans.get(i);

beans.set(i, beans.get(j));

beans.set(j, temp);

}

}

}

return beans;

}

/**

* 采用递归对数组集合合并树形结构集合

*

* @param beans

* @param parentId

* @param root

* @return

*/

private JTreeNode tree(List> beans, Serializable parentId,JTreeNode root) {

if (root == null) {

root = new JTreeNode();

root.setId(parentId);

}

for (int i = 0; i < beans.size(); i++) {

JTreeNode bean = beans.get(i);

Serializable pid = bean.getParentId();

if(pid == null){

pid = "";

}

if (pid.equals(root.getId())) {

JTreeNode nodeBean = tree(beans, bean.getId(), bean);

root.getChildren().add(nodeBean);

}

}

return root;

}

/**

* 采用递归将树形集合转化成数组集合结构

*

* @param tree

* @param num

* @return

*/

public List> treeConvertList(List> tree, int num,

List> arrayBeans) {

for (JTreeNode bean : tree) {

String sign ="";

for (int i = 1; i < num; i++) {

sign+=this.getSign();

}

bean.setNum(num);

bean.setSign(sign);

arrayBeans.add(bean);

List> ChildrenList = bean.getChildren();

if (!ChildrenList.isEmpty()) {

int a = num + 1;

treeConvertList(ChildrenList, a, arrayBeans);

}

}

return arrayBeans;

}

public void add(Serializable id, Serializable pid, int sortIndex,M data) {

initBeans.add(new JTreeNode(id, pid, sortIndex, data));

}

public static void main(String[] args) {

JTree jtree = new JTree();

jtree.setSign("++");

jtree.add("1", null, 7, "系统管理");

jtree.add("2", null, 6, "帮助中心");

jtree.add("3","2", 5, "接口规范");

jtree.add("4", "1", 4, "首页1");

jtree.add("5", "4", 4, "首页2");

jtree.add("6", "3", 4, "首页3");

List> list = jtree.start(true, null);

}

}

2.[代码]JTreeNode

//

// Copyright 2014 All Rights Reserved //

//

/* =======================================================================

* 系统名 :

* 子系统名 :

* Class名 : JTreeNode.java

* 概要 :

* 改版履历 :

* 版本 日期 作者名 备注

* 1.0.0 2015年10月23日 郭恩洲 初次作成

* ======================================================================= */

package com.common;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

public class JTreeNode {

private Serializable id;

private Serializable parentId;

private int sortId;

private int num;

private String sign;

private M data;

private List> children = new ArrayList>();

public JTreeNode() {

super();

}

public JTreeNode(Serializable id, Serializable parentId, int sortId, M obj) {

this.id = id;

this.sortId = sortId;

this.parentId = parentId;

this.data = obj;

}

public String getSign() {

return sign;

}

public void setSign(String sign) {

this.sign = sign;

}

public M getData() {

return data;

}

public void setData(M data) {

this.data = data;

}

public Serializable getId() {

return id;

}

public void setId(Serializable id) {

this.id = id;

}

public Serializable getParentId() {

return parentId;

}

public void setParentId(Serializable parentId) {

this.parentId = parentId;

}

public int getSortId() {

return sortId;

}

public void setSortId(int sortId) {

this.sortId = sortId;

}

public void setParentId(String parentId) {

this.parentId = parentId;

}

public List> getChildren() {

return children;

}

public void setChildren(List> children) {

this.children = children;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值