一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java字母加數(shù)字組合比較大小

Java字母加數(shù)字組合比較大小

2020-05-16 15:40kingxss JAVA教程

這篇文章主要通過(guò)實(shí)現(xiàn)Comarable接口來(lái)比較(如"a20"和"a9"這種)字符串的大小,希望能給大家做一個(gè)參考。

  針對(duì)字符串是數(shù)字和字母結(jié)合而進(jìn)行的,如"a20"和"a9";比較而得出結(jié)果是"a20">"a9"。這種情況直接調(diào)用String的compareTo方法得出的結(jié)果是不是我們希望的。這個(gè)時(shí)候就需要寫(xiě)自己的類(lèi)并且實(shí)現(xiàn)Comarable接口來(lái)進(jìn)行比較。這個(gè)是來(lái)源一次的面試題目,但是當(dāng)時(shí)只有個(gè)思路。

  思路:

  1.轉(zhuǎn)換String為包含substring和Integer的list。(這里用String的spit方法直接拆分不知道怎么做?)

  2.將list的數(shù)據(jù)進(jìn)行比較。

  3.如果list中的比較結(jié)果相等,再調(diào)用String的compareTo。

  代碼實(shí)現(xiàn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package testsource;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 *
 * @author Waston Xu
 * @date 2011-4-15 上午10:48:21
 */
public class MyString implements Comparable<MyString> {
  private final String string;
  private List<Object> list;
 
  public MyString(String string) {
    this.string = string;
    trimString2List();
  }
 
  private void trimString2List() {
    list = new ArrayList<Object>();
    Integer num = 0;
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < this.string.length(); i++) {
      char c = this.string.charAt(i);
      if (c > 47 && c < 58) {
        if (sb.length() != 0) {
          list.add(sb);
          sb = new StringBuffer();
        }
        num = num * 10 + (c - '0');
        continue;
      } else {
        if (num != 0) {
          list.add(num);
          num = 0;
        }
        sb.append(c);
        continue;
      }
    }
    if (sb.length() != 0) {
      list.add(sb);
      sb = new StringBuffer();
    } else if (num != 0) {
      list.add(num);
      num = 0;
    }
  }
 
  /*
   * 在仔細(xì)的觀看了String的compareTo方法后,本來(lái)打算不調(diào)用其API進(jìn)行編程,
   * 但是考慮到出現(xiàn)"a02"和"a2"這樣的情況還是使用其API中的方式解決。
   */
  private int compareToLikeString(String s) {
    int len1 = string.length();
    int len2 = s.length();
    int n = Math.min(len1, len1);
    if (n > 0) {
      int k = 0;
      while (k < n) {
        char c1 = string.charAt(k);
        char c2 = s.charAt(k);
        if (c1 != c2)
          return c1 - c2;
        k++;
      }
    }
 
    return len1 - len2;
  }
 
  @Override
  public int compareTo(MyString anotherString) {
    int len1 = list.size();
    int len2 = anotherString.list.size();
    int n = Math.min(len1, len2);
 
    int mark = 0;
    if (n > 0) {
      int i = 0;
      while (i < n) {
        Object o1 = list.get(i);
        Object o2 = anotherString.list.get(i);
        if (o1 instanceof Integer && o2 instanceof Integer) {
          mark = (Integer) o1 - (Integer) o2;
        } else {
          mark = o1.toString().compareTo(o2.toString());
        }
        if (mark != 0)
          return mark;
        i++;
      }
    }
    return compareToLikeString(anotherString.string);
    //return string.compareTo(anotherString.string);
    /* 如果這樣寫(xiě)會(huì)有個(gè)弊端就是出現(xiàn)"a02"和"a2"這樣的情況,肯定是前面的小*/
    //return string.length() - anotherString.string.length();
  }
 
  public static void main(String[] args) {
    String s1 = "b9c";
    String s2 = "b09c";
    MyString m1 = new MyString(s1);
    MyString m2 = new MyString(s2);
 
    System.out.println(m1.compareTo(m2));
  }
}

查看更多Java的語(yǔ)法,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费一级特黄特色大片在线 | 91精品国产免费久久国语蜜臀 | a看片| ai换脸杨颖啪啪免费网站 | 免费看www | 亚洲无线一二三四区 | 十大免费b2b网站 | 日本护士撒尿xxxx欧美 | 久久性生大片免费观看性 | 国内老司机精品视频在线播出 | 四虎在线免费播放 | 国产v在线播放 | 四虎在线免费播放 | 亚洲欧美激情日韩在线 | 国内精品露脸在线视频播放 | 欧美大美bbb和大白屁股 | 欧美久久久久久久一区二区三区 | 毛片免费的 | 欧美日韩一品道 | 精品综合久久久久久8888 | 国产精品每日在线观看男人的天堂 | 成人快手破解版 | 九九久久精品 | jizz农村野外jizz农民 | 精品国语国产在线对白 | 久久精品免视看国产 | 色久网 | 99视频都是精品热在线播放 | 激情影院免费观看 | 成人中文字幕在线观看 | 日韩欧美视频二区 | 男女天堂 | 手机看片一区二区 | 国产suv精品一区二区四区三区 | 日韩欧美一区二区三区四区 | 国产高清不卡码一区二区三区 | 日韩在线毛片 | 欧美日韩在线一区 | 国产美女亚洲精品久久久综合91 | 能播放的欧美同性videos | 扒开大腿狠狠挺进视频 |