天天看點

Java開發技巧

想想自己做java也有好長時間了,在這些日子裡,收獲了很多,當我還是一名初學者的時候,走了不少彎路,到現在為止,常常可能還是會走一些彎路。常常我會反思一下自己的過去寫的代碼,覺得很多代碼真的都很垃圾,或者效率也沒有做過考慮,偶爾會發現很多改進的辦法和一些新的思路,在這裡作一些收集,以便于以後的開發。

這篇文章會不定期更新,好的點子肯定會收集進來,如果您有什麼這方面的好的經驗的話,也可以回複上來,我将會十分感謝您的支援和幫助,大家一起進步嘛。

由于個人水準有限,文中不免有錯誤之處,還請各位兄弟姐妹們指正,不勝感激!

1、去掉一個字元串數組中的重複項:(2006.04.11.)

原來采用的方法:

1 string[] rid = request.getparametervalues("noattrid");

2 //需要用一個臨時的變量把過濾後的結果這個存起來

3 string[] ridfiltered = new string[rid.length];

4 int index = 0;

5 for (int i = 0; i < rid.length; i++) {

6 if (!this.isexiststring(ridfiltered, rid[i])&&!rid[i].equals("")) {

7 ridfiltered[index++] = rid[i];

8 }

9 }

10

11 //還需要用一個方法來判斷在結果中是否存在此項,如下

12 /**

13 * 用于查找某個字元串是否在一個字元串數組中

14 * @param dest string[]

15 * @param str string

16 * return boolean

17 */

18

19 public boolean isexiststring(string[] dest, string str) {

20 boolean flag = false;

21 for (int i = 0; i < dest.length; i++) {

22 if (str.equals(dest[i])) {

23 flag = true;

24 }

25 }

26 return flag;

27 }

看看,要多麻煩有多麻煩,來看看新方法:

1 string[] s = request.getparametervalues("noattrid");

2 list list = arrays.aslist(s);

3 set set = new hashset(list);

4//rid=(string [])set.toarray();

5 string[] temp = new string[set.size()];

6 iterator ite = set.iterator();

7 for (int i = 0; ite.hasnext(); i++) {

8 temp[i] = (string) ite.next();

簡簡單單的幾行代碼即可搞定,無論是從程式的可讀性、優雅性還是效率方面都有很好的提升。

擴充:你同時還可以運用上面的方法還判斷三個字元串是否相等(可進一步擴充至多個,但是似乎不太有實際意義),例程如下:

1 string[] s = {"one", "two", "two"};

4 system.out.println(list.size() == set.size()); // false