想想自己做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