轉載 自http://www.tkk7.com/fastzch/archive/2006/04/11/40507.html?Pending=true#Post
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();
簡簡單單的三行代碼即可搞定,無論是從程序的可讀性、優雅性還是效率方面都有很好的提升。
擴展:你同時還可以運用上面的方法還判斷三個字符串是否相等(可進一步擴展至多個,但是似乎不太有實際意義),例程如下:
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
|----------------------------------------------------------------------------------------|
版權聲明 版權所有 @zhyiwww
引用請注明來源 http://www.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2006-04-13 09:38
zhyiwww 閱讀(5218)
評論(5) 編輯 收藏 所屬分類:
java basic