Loading

Java中两个List对比的算法

Java中两个List对比的算法:

 

 

                // 测试数据
                // tdcsDdt.add("Z");
                // tdcsDdt.add("B");
                // tdcsDdt.add("C");
                // tdmsDdt.add("D");
                // tdmsDdt.add("A");
                // tdmsDdt.add("F");
                // java中排序与SQL中排序不一致,需要按照java中的方式重排一下;
                Collections.sort(tdcsDdt);
                Collections.sort(tdmsDdt);
                String sep = "========";
                String blank = "       ";
                System.out.println("==TDCS==" + ljpym + "==TDMS==");
                // 记录TDMS所在位置
                int kMark = 0;
                for (int j = 0, sizej = tdcsDdt.size(); j < sizej; j++) {
                    String tdcsDdtStr = tdcsDdt.get(j);
                    // 记录是否进入了循环,防止kMark==tdmsDdt.size()的时候多输出一行;
                    boolean isInxunhuan = false;
                    for (int k = kMark, sizek = tdmsDdt.size(); k < sizek; k++) {
                        isInxunhuan = true;
                        String tdmsDdtStr = tdmsDdt.get(k);
                        if (tdmsDdtStr.compareTo(tdcsDdtStr) < 0) {
                            System.out.println(blank + sep + tdmsDdtStr);
                            kMark++;
                        }
                        if (tdmsDdtStr.compareTo(tdcsDdtStr) == 0) {
                            System.out.println(tdcsDdtStr + sep + tdmsDdtStr);
                            kMark++;
                            break;
                        }
                        if (tdmsDdtStr.compareTo(tdcsDdtStr) > 0) {
                            System.out.println(tdcsDdtStr + sep + blank);
                            break;
                        }
                    }
                    // 如果tdmsDdt循环完毕,需要把tdcsDdt的继续输出
                    if (kMark - tdmsDdt.size() == 0 && !isInxunhuan) {
                        System.out.println(tdcsDdtStr + sep + blank);
                    }
                }
                for (int k = kMark, sizek = tdmsDdt.size(); k < sizek; k++) {
                    String tdmsDdtStr = tdmsDdt.get(k);
                    System.out.println(blank + sep + tdmsDdtStr);
                }

 

posted @ 2015-12-30 09:45  stono  阅读(4316)  评论(0编辑  收藏  举报