Hi everyone

I have 5 variables

1. XTSM is between 0~200
2. XTS is between 0~2
3. XRX is 0~3
4. XHAN is 0~7
5. ZHTYPE is one of these : (1)TCHF_HLF (2)TCHSD (3)TCHFULL

they are related to their with this shape .

XTSM->XTS->XRX->XHAN->ZHTYPE (Just Logical)

Please tell me how can i see this output?

Code:
----Type------------------Total---------------------Total of ZHTYPE-----------------
    XTSM:0/XTS:0               in this case is : 29     TCHF_HLF:28 TCHSD:1 TCHFULL:0
    XTSM:0/XTS:1               No. of found   
    XTSM:0/XTS:2               No. of found   
    XTSM:1/XTS:0               No. of found   
    XTSM:1/XTS:1               No. of found   
    XTSM:1/XTS:2               No. of found
I get XTSM/XTS/TRX/XHAN and now i want count total of this

ZHTYPE is one of these : (1)TCHF_HLF (2)TCHSD (3)TCHFULL

they are related to their with this shape .

* Each XTSM has 3 XTS (0-2)
* Each XTS has 4 XRX (0-3)
* Each XRX has 8 XCHAN (0-7)
* and Each line has a type of ZHTYPE

This is sample file: 4shared.com - document sharing - download db.txt

This output with this code is true but I want add ZHTYPE at the end of each line + XTSM/XTS please help me ???(for example this : XTSM:0/XTS:0 : 29 TCHF_HLF:28 TCHSD:1 TCHFULL:0)

Code:
public class Test {

    public static void main(String[] args) throws IOException {
        Test test = new Test();
        test.execute();
    }

    private static String TYPE_XTSM = "XTSM";
    private static String TYPE_XTS = "XTS";
    private static String TYPE_XRX = "XRX";
    private static String TYPE_XHAN = "XHAN";

    private void execute() throws IOException {
        InputStream in = null;
        BufferedReader br = null;
        TreeMap<Integer, TreeMap<Integer, Integer>> xtsmMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
        try {
            in = Test.class.getResourceAsStream("db.txt");
            br = new BufferedReader(new InputStreamReader(in));
            String line;
            while ((line = br.readLine()) != null) {
                Record rec = new Record(line);
                processRecord(xtsmMap, rec);
            }
        } finally {
            if (br != null) {
                br.close();
            }
        }
        printResults(xtsmMap);
    }

    private void processRecord(
            TreeMap<Integer, TreeMap<Integer, Integer>> xtsmMap, Record rec) {
        TreeMap<Integer, Integer> xtsMap;
        if (xtsmMap.containsKey(rec.getXtsm())) {
            xtsMap = xtsmMap.get(rec.getXtsm());
        } else {
            xtsMap = new TreeMap<Integer, Integer>();
            xtsmMap.put(Integer.valueOf(rec.getXtsm()), xtsMap);
        }
        if (xtsMap.containsKey(rec.getXts())) {
            Integer count = xtsMap.get(rec.getXts());
            xtsMap.put(Integer.valueOf(rec.getXts()), Integer.valueOf(count
                    .intValue() + 1));
        } else {
            xtsMap.put(Integer.valueOf(rec.getXts()), Integer.valueOf(1));
        }
    }

    private void printResults(
            TreeMap<Integer, TreeMap<Integer, Integer>> xtsmMap) {
        System.out.println("Type\t\tTotal");
        Set<Integer> xtsmSet = xtsmMap.navigableKeySet();
        for (Integer xtsm : xtsmSet) {
            TreeMap<Integer, Integer> xtsMap = xtsmMap.get(xtsm);
            Set<Integer> xtsSet = xtsMap.navigableKeySet();
            for (Integer xts : xtsSet) {
                Integer count = xtsMap.get(xts);
                String outputLine = TYPE_XTSM + ":" + xtsm + "/" + TYPE_XTS
                        + ":" + xts + "\t" + count;
                System.out.println(outputLine);
            }
        }
    }

    private static class Record {

        private Integer xtsm, xts, xrk, xhan;

        Record(String line) {
            StringTokenizer st = new StringTokenizer(line, "/");
            while (st.hasMoreTokens()) {
                String token = st.nextToken();
                String type = token.substring(0, token.indexOf(":"));
                String valueStr = token.substring(token.indexOf(":") + 1, token
                        .length());
                Integer value = Integer.valueOf(valueStr);
                if (TYPE_XTSM.equals(type)) {
                    xtsm = value;
                } else if (TYPE_XTS.equals(type)) {
                    xts = value;
                } else if (TYPE_XRX.equals(type)) {
                    xrk = value;
                } else if (TYPE_XHAN.equals(type)) {
                    xhan = value;
                }
            }
        }

        public Integer getXtsm() {
            return xtsm;
        }

        public Integer getXts() {
            return xts;
        }

        public Integer getXrk() {
            return xrk;
        }

        public Integer getXhan() {
            return xhan;
        }
    }
}
I want add ZHTYPE to this ...

Code:
Type        Total
XTSM:0/XTS:0    29        such as this : TCHF_HLF:28 TCHSD:1 TCHFULL:0
XTSM:0/XTS:1    29
XTSM:0/XTS:2    29
XTSM:1/XTS:0    29
XTSM:1/XTS:1    29
XTSM:1/XTS:2    29
XTSM:2/XTS:0    29
XTSM:2/XTS:1    29
XTSM:2/XTS:2    29
XTSM:3/XTS:0    14
XTSM:3/XTS:1    14
XTSM:3/XTS:2    14
XTSM:4/XTS:0    13
Thanks a lot.