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); }