`

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,得到有序的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]


第二种方法,感觉思路更清晰,运算复杂度更小:getCountByName方法

	public static List<Product> getCountByName(List<Product> productList) {

		List<Product> targetList = new ArrayList<Product>();
		Product product = null;

		// 寻找该name的总count,然后删除该name
		String 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;
	}





.

分享到:
评论

相关推荐

    Java集合框架.ppt

    集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中

    JAVA_API1.6文档(中文)

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供...

    疯狂Java讲义 第3版 PDF电子书下载 带书签目录 完整版.rar

    本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、JavaGUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、...

    JavaAPI中文chm文档 part2

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供...

    Java 1.6 API 中文 New

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于...

    疯狂java讲义源代码

    本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、...

    java api最新7.0

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于...

    [Java参考文档].JDK_API 1.6

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于...

    JavaAPI1.6中文chm文档 part1

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供...

    疯狂Java讲义代码

    《疯狂Java讲义》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多...

    疯狂 Java 讲义(第2版).zip

    《疯狂Java讲义》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多...

    [Java参考文档]

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供...

    java面试题

    《疯狂Java讲义》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多...

    疯狂java讲义+源码

    本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、...

    JDK_1_6 API

    java.util.prefs 此包允许应用程序存储并获取用户和系统首选项和配置数据。 java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于...

    保存java api、常用工具、一般的api试用代码.rar

    Java API(Java Application Programming Interface)是Java应用程序编程接口的缩写,Java中的API,就是...java.util:该包中主要包含一些实用的工具类,比如集合框架类、日期处理类、字符串解析类、随机数生成类等。

    Java Collection集合的简单介绍与运用

    2 集合框架 集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map,这里主要记录一下Collection集合。 Collection:单列集合类的根接口,用于存储一系列符合某种规则的...

Global site tag (gtag.js) - Google Analytics