想想自己做JAVA也有好長時間了,在這些日子里,收獲了很多,當我還是一名初學(xué)者的時候,走了不少彎路,到現(xiàn)在為止,常常可能還是會走一些彎路。常常我會反思一下自己的過去寫的代碼,覺得很多代碼真的都很垃圾,或者效率也沒有做過考慮,偶爾會發(fā)現(xiàn)很多改進的辦法和一些新的思路,在這里作一些收集,以便于以后的開發(fā)。
這篇文章會不定期更新,好的點子肯定會收集進來,如果您有什么這方面的好的經(jīng)驗的話,也可以回復(fù)上來,我將會十分感謝您的支持和幫助,大家一起進步嘛。
由于個人水平有限,文中不免有錯誤之處,還請各位兄弟姐妹們指正,不勝感激!
1、去掉一個字符串數(shù)組中的重復(fù)項:(2006.04.11.)
原來采用的方法:
?1?String[]?rid?=?request.getParameterValues("noattRid");
?2?//需要用一個臨時的變量把過濾后的結(jié)果這個存起來
?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?//還需要用一個方法來判斷在結(jié)果中是否存在此項,如下
12??/**
13??????*?用于查找某個字符串是否在一個字符串數(shù)組中
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();
9 }
簡簡單單的幾行代碼即可搞定,無論是從程序的可讀性、優(yōu)雅性還是效率方面都有很好的提升。
擴展:你同時還可以運用上面的方法還判斷三個字符串是否相等(可進一步擴展至多個,但是似乎不太有實際意義),例程如下:
1?String[]?s?=?{"one",?"two",?"two"};
2?List?list?=?Arrays.asList(s);
3?Set?set?=?new?HashSet(list);
4?System.out.println(list.size()?==?set.size());?//?false
posted on 2006-04-11 18:08
Robin's Programming World 閱讀(3365)
評論(9) 編輯 收藏 所屬分類:
Java