有A,B,c三个数组(三层)
00 A 001
00 A 002
00 B 003
00 B 004
01 A 005
01 A 006要按如下结构输出..
00 A
001
002
B
003
00401 A
005
006
弄了一会,晕了...没出来..
00 A 001
00 A 002
00 B 003
00 B 004
01 A 005
01 A 006要按如下结构输出..
00 A
001
002
B
003
00401 A
005
006
弄了一会,晕了...没出来..
A数组 00 00 00 00 01 01
B数组 A A B B A A
C数组 001,002,003,004,005,006
String content;
int start;
int end;
}class Node {
NodeInfo nodeInfo;
List<Node> childList;
}publis class MainClass {
/**
* 在指定数组的指定位置范围内搜索child
*/
ArrayList<NodeInfo> getNodes(String[] datas, int start, int end) {
//coding
} public void static main(String[] args) {
String[] A,B,C;
//给A,B,C赋值
//......
ArrayList<NodeInfo> ALayerNodes = getNodes(A,0,A.length-1);
Node root = new Node();
root.childList = new ArrayList<Node>();
for (int i=0 ,int size = ALayerNodes.size(); i<size; i++) {
NodeInfo nodeInfoB = ALayerNodes.get(i);
ArrayList<NodeInfo> BLayerNodes = getNodes(B,nodeInfo.start,nodeInfo.end);
root.childList.add(nodeInfoB);
nodeInfoB.childList = new ArrayList<Node>();
for (int j=0; int size= BLayerNodes.size(); j<size; j++) {
NodeInfo nodeInfoC = BLayerNodes.get(j);
ArrayList<NodeInfo> CLayerNodes = getNodes(C,nodeInfo.start,nodeInfo.end);
nodeInfoB.childList.add(nodeInfoC);
}
}
//对root循环输出
//......
}
}直接在文本框里写的代码,不知道能不能编译通过,但是这个思路应该可以满足你的要求。
String[] A,B,C;
//给A,B,C赋值
//......
ArrayList<NodeInfo> ALayerNodes = getNodes(A,0,A.length-1);
Node root = new Node();
root.childList = new ArrayList<Node>();
for (int i=0 ,int size = ALayerNodes.size(); i<size; i++) {
NodeInfo nodeInfoB = ALayerNodes.get(i);
ArrayList<NodeInfo> BLayerNodes = getNodes(B,nodeInfoB.start,nodeInfoB.end);
root.childList.add(nodeInfoB);
nodeInfoB.childList = new ArrayList<Node>();
for (int j=0; int sizeB= BLayerNodes.size(); j<sizeB; j++) {
NodeInfo nodeInfoC = BLayerNodes.get(j);
ArrayList<NodeInfo> CLayerNodes = getNodes(C,nodeInfoC.start,nodeInfoC.end);
nodeInfoB.childList.add(nodeInfoC);
}
}
//对root循环输出
//......
}
从你需要的输出来看 是一个树的结构,用数组来描述这个数据结构不合理!
* <p></p>
* @version 1.0 2005/10/04
*/
public class PrintOut { /**
* <p>メソッド内容を記載する。</p>
* @param args
*/
public static void main(String[] args) {
print();
}
private static void print() {
String A[] = {"00","00","00","00","01","01"};
String B[] = {"A","A","B","B","A","A"};
String C[] = {"001","002","003","004","005","006"};
int bStart = 0;
int bEnd = 0;
//make it easier
String currentA = A[0];
for (int i=0;i<A.length;i++ ) {
if ((!currentA.equals(A[i])) || (i==(A.length-1))) {
bStart = bEnd;
if (i==(A.length-1) && currentA.equals(A[i])) {
bEnd = i + 1;
} else {
bEnd = i;
}
System.out.println();
System.out.println(currentA);
System.out.println();
int cStart =0;
int cEnd =0;
String currentB = B[bStart];
for (int j=bStart; j<bEnd; j++) {
if (!currentB.equals(B[j]) || (j==(bEnd-1))) {
if (cEnd >= bStart)
cStart = cEnd;
else {
cStart = bStart;
}
if ((j==(bEnd-1) && currentB.equals(B[j])) ) {
cEnd = j + 1;
} else {
cEnd = j;
} System.out.println(currentB);
for (int k=cStart; k<cEnd; k++) {
System.out.println(C[k]);
}
String tempB = currentB;
currentB = B[j];
if (!tempB.equals(B[j]) && (j==(bEnd-1))){
j--;
}
continue;
}
if (currentB.equals(B[j])) {
continue;
}
}
String tempA = currentA;
currentA = A[i];
if (!tempA.equals(A[i]) && (i==(A.length-1))){
i--;
}
continue;
}
if (currentA.equals(A[i])) {
continue;
}
}
}
}