黑马程序员技术交流社区

标题: 写了一个队IP地址进行排序的比较器,求大神指教 [打印本页]

作者: itpower    时间: 2014-2-26 16:53
标题: 写了一个队IP地址进行排序的比较器,求大神指教
写玩我自己都看不懂了,求大神看哈,能不能优化,或者说逻辑根本就有问题?

下面是代码
  1. TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {

  2.                         @Override
  3.                         public int compare(String str1, String str2) {
  4.                                 String[] arr1 = str1.split("\\.");
  5.                                 String[] arr2 = str2.split("\\.");
  6.                                 int arr1Len = 0;
  7.                                 int arr2Len = 0;
  8.                                 int num = 0;
  9.                                 if (arr1Len < arr1.length && arr2Len < arr2.length) {
  10.                                         num = new Integer(arr1[arr1Len]).compareTo(new Integer(
  11.                                                         arr2[arr2Len]));
  12.                                         arr1Len++;
  13.                                         arr2Len++;
  14.                                         if (num == 0) {
  15.                                                 if (arr1Len < arr1.length && arr2Len < arr2.length) {
  16.                                                         num = new Integer(arr1[arr1Len])
  17.                                                                         .compareTo(new Integer(arr2[arr2Len]));
  18.                                                         arr1Len++;
  19.                                                         arr2Len++;
  20.                                                         if (num == 0) {
  21.                                                                 if (arr1Len < arr1.length
  22.                                                                                 && arr2Len < arr2.length) {
  23.                                                                         num = new Integer(arr1[arr1Len])
  24.                                                                                         .compareTo(new Integer(
  25.                                                                                                         arr2[arr2Len]));
  26.                                                                         arr1Len++;
  27.                                                                         arr2Len++;
  28.                                                                         if (num == 0) {
  29.                                                                                 if (arr1Len < arr1.length
  30.                                                                                                 && arr2Len < arr2.length) {
  31.                                                                                         num = new Integer(arr1[3])
  32.                                                                                                         .compareTo(new Integer(
  33.                                                                                                                         arr2[3]));
  34.                                                                                         arr1Len++;
  35.                                                                                         arr2Len++;
  36.                                                                                         if (num == 0) {
  37.                                                                                                 if (arr1Len < arr1.length
  38.                                                                                                                 && arr2Len < arr2.length) {
  39.                                                                                                         throw new RuntimeException("IP地址格式不对");
  40.                                                                                                 }
  41.                                                                                                 else
  42.                                                                                                         return num;
  43.                                                                                         }
  44.                                                                                 }
  45.                                                                         }
  46.                                                                 }
  47.                                                         }
  48.                                                 }
  49.                                         }
  50.                                 }
  51.                                 return num;
  52.                         }
  53.                 });
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2