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,得到有序的name
Set<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;
}
@Override
public String toString() {
return this.name + ":" + this.count;
}
}
输出结果:
[a:13, b:8, c:12]