The previous period encountered a problem, is sorted for an array, and the array is stored (the Oracle's Connect is classified), but the order in each stage is chaos, the following class is completed Sort function package dsn;
Import java.util. *; import log. *; import model. *;
Public class requiresorter2 {log4jwrapper log = Weblog.GetInstance (); private static requiresorter2 instance = new required = new required requiresorter2 (); private requiresorter2 ()}
Public Static RequiresORTER2 getInstance () {Return Instance;
public ProductRequire [] sort (ProductRequire [] sourceRequire) {log.debug ( "Begin sort"); long start = System.currentTimeMillis (); if (null == sourceRequire || sourceRequire.length == 0) {return sourceRequire; }
/ * Construct Ordered Tree * / Sortertreenode Root = New Sortrtreenode (NULL); for (int i = 0; i / * Turns to array * / sourceRequire = TreetoArray (root); long end = system.currenttimemillis (); log.debug ("sort count: sourceRequire.length; log.debug (" sort time: (end-start); return sourceRequire;} / ** * using depth-first traversal tree, returns an array * @param treeNode TreeNode * @return ProductRequire [] * / private ProductRequire [] treeToArray (SorterTreeNode treeNode) {/ * Remove from the storage nodes in the tree * / ArrayList list = new ArrayList (); stack stack = new stack (); stack.push (treenode); sortertreenode parent = null; sortertreenode child = null; while (! Stack.isempty ()) {parent = (sortertreenode) stack.pop (); / * The root node is null * / if (null! = Parent.getProductRequire ()) {list.dd (parent.getProductRequire ());} arraylist children = parent.getChildren () (); for (int i = children.size) ) -1; i> = 0; I -) {stack.push (children.get (i));}} ProductRequire [] ProductRequire = (ProductRequire []) list.toarray (new productRequire " ]); Return ProductRequire;}}} Class Sortertreenode {/ * Artificial Node * / Public Static Final String Other_le VEL_REQUIREMENT_NO = "" / * Parent Node * / Private Sortertreenode Parent = NULL; / * Objects stored in this node * / private productRequire ProductRequire = NULL / * Child node * / private arraylist children = new arraylist (); private int lastChildIndex = -1; / ** * private * / private SorterTreeNode (ProductRequire [] sourceRequire) {} / ** * constructor * / public SorterTreeNode (ProductRequire productRequire) {this.productRequire = productRequire;} Public sortreenode getparent () {return parent;} Public void setparent (sortertreenode parent) {this.parent = parent; Public arraylist getchildren () {return children;} public productRequiren;} {returnified productRequire; / ** * Add Node * / public void add (SorterTreeNode treeNode) {if (lastChildIndex <0 || ((SorterTreeNode) children.get (lastChildIndex)). GetProductRequire (). GetLevelId () == treeNode.getProductRequire (). GetlevelID ()) {INSERTCHILD (TREENODE);} else {(sortertreenode). Add (Treenode);}} / * ** sequentially inserted child node * @param productRequire ProductRequire * / private void insertChild (SorterTreeNode child) {child.setParent (this); ProductRequire productRequire = child.getProductRequire (); ProductRequire tmp = null; for (int i = 0; i Public Int Compare (Object O1, Object O2) {int result = ((string) O1) .Compareto (O2); if (Result> 0 && / other_level_requirement_no.equals (o2)) {results = 0;} Return Result;} Public Boolean Equals (Object O1) {Return True;} }