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