java.util包的集合框架应用
package mix.test;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashSet;import java.util.List;import java.util.Set;/** * @function 【武汉】歪尘(531314208) 2011-10-26 20:55:54<BR> * set集合有一些javabean,我要怎么进行过滤?<BR> * name 数量 <BR> * a 10<BR> * b 3<BR> * a 3<BR> * b 5<BR> * * name 数量 <BR> * a 13<BR> * b 8<BR> * * @author ocaicai@yeah.net * * @date 2011-10-27 */public class ListTest {/** * @param args */public static void main(String[] args) {List<Product> list = genernateProduct();list = getCountByName(list);System.out.println(Arrays.toString(list.toArray()));}public static List<Product> genernateProduct() {List<Product> list = new ArrayList<Product>();list.add(new Product("a", 10));list.add(new Product("b", 3));list.add(new Product("a", 3));list.add(new Product("c", 5));list.add(new Product("b", 5));list.add(new Product("c", 7));return list;}public static List<Product> getCountByName(List<Product> list) {List<Product> targetList = new ArrayList<Product>();int count = 0;Product product = null;// 去除掉重复name,得到有序的nameSet<String> nameSet = new HashSet<String>();List<String> nameList = new ArrayList<String>();for (int i = 0; i < list.size(); i++)nameSet.add(list.get(i).getName());for (String name : nameSet)nameList.add(name);Collections.sort(nameList);// 获取每个name的count和for (String name : nameList) {count = 0;for (int i = 0; i < list.size(); i++) {product = list.get(i);if (product.getName().equals(name)) {count += product.getCount();list.remove(i);i--;}}targetList.add(new Product(name, count));}return targetList;}}package mix.test;public class Product {private String name;private int count;public Product(String name, int count) {super();this.name = name;this.count = count;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic String toString() {return this.name + ":" + this.count;}}[a:13, b:8, c:12]
public static List<Product> getCountByName(List<Product> productList) {List<Product> targetList = new ArrayList<Product>();Product product = null;// 寻找该name的总count,然后删除该nameString name = null;int count = 0;while (productList.size() > 0) {name = productList.get(0).getName();count = 0;for (int i = 0; i < productList.size(); i++) {product = productList.get(i);if (product.getName().equals(name)) {count += product.getCount();productList.remove(i);i--;}}targetList.add(new Product(name, count));}return targetList;}