原文:http://www. zuidaima.com/blog/3182745969511424.htm
以前只是聽過這個工具包,但是真正用的話還是在D75需求中。我要實現把前台傳入的list集合用分號分割拼接一個字符串存入數據庫,
開始的時候我用代碼邏輯如下:
StringBuffer interfaceList=new StringBuffer(); //判斷前台綁定中的集合是否為空 if(interfaces!=null) { for(String str:interfaces){ interfaceList.append(str).append(";"); } //去掉最后一個分號 tpc.setInterfaces(interfacesStr.subStrting(0,interfaceList.length()-1); }
感覺這里使用了stringbuffer就沒問題了吧,然后hery對我說代碼還可以壓縮,我就看了下apache的StringUtils這個類和google的guava包下
的Joiner這個類。我才發現這樣的工具包真的好強大,封裝了好多功能,學習是永無止境的。上面的代碼只需要寫一句就替代了:
String interfacesStr=StringUtils.join(interfaces.iterator(), ';');
或者String interfacesStr= Joiner.on(";").join(interfaces.iterator());
有時候我們這樣寫:
Person person1=new Person("jack",20); Person person2=new Person("jack",20); Person person2=new Person("jack",20); //會去這樣存入list集合: List<Person> personList=new ArrayList<Person>(); personList.add(person1); personList.add(person2); personList.add(person3);
在guava中可以這樣:List<Person> list = Lists.newArrayList(person1, person2, person3);當然也可以這樣Arrays.asList(person1, person2, person3);
在比較對象大小的時候都知道有兩種方式:
1.實體類實現Conparable接口;2.在Collections.sort()實現Comparator接口
在guava中的對象比較,實現的Comparator可以這樣寫:
new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return ComparisonChain.start().compare(o1.getName(), o2.getName()).compare(o1.getAge(), o2.getAge()) .result(); } }
還有很多功能還要自己去摸索學習,此處省略.............