List筛选样例

有的时候,我们在做关联下拉列表时,需要取得父节点的值然后在去数据库中查找子节点的可选项,此时就需要频繁地操作数据库,低下。

我们不妨一次性地将整张表读取出来,然后保持在list中,接下来的操作 变成了是对List的操作,而不需要进行数据库的连接,此时就涉及到List的筛选问题。

现给出工作中遇到的样例:如下


/**
 * 
 */
package com.huawei.bean;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zhangliping
 * 2014年12月30日
 */
public class ListUtil {

	List<Version> versionList = new ArrayList<Version>();
	
	public List<Version> getVersionList() {
		Version version = new Version();
		version.setDu("研发管理部");
		version.setPdu("解决方案开发部");
		version.setProduct("解决方案开发部");
		version.setVersionName("loadspace6");
		versionList.add(version);
		
		version = new Version();
		version.setDu("研发管理部");
		version.setPdu("开发部");
		version.setProduct("ewind load");
		version.setVersionName("loadspace7");
		versionList.add(version);
		
		version = new Version();
		version.setDu("研发管理部");
		version.setPdu("开发部");
		version.setProduct("ewind");
		version.setVersionName("loadspace7");
		versionList.add(version);
		
		version = new Version();
		version.setDu("研发管理部");
		version.setPdu("开发部");
		version.setProduct("ewind");
		version.setVersionName("applo");
		versionList.add(version);
		
		version = new Version();
		version.setDu("SingleAS");
		version.setPdu("SingleAS");
		version.setProduct("解决方案开发部");
		version.setVersionName("SDP");
		versionList.add(version);
		
		version = new Version();
		version.setDu("数字业务部");
		version.setPdu("VNP");
		version.setProduct("VMP");
		version.setVersionName("VMP30");
		versionList.add(version);
		version = new Version();
		version.setDu("数字业务部");
		version.setPdu("VNP1");
		version.setProduct("VMP");
		version.setVersionName("VMP30");
		versionList.add(version);
		
		return versionList;
	}
	
//			Version [du=研发管理部, pdu=解决方案开发部, product=解决方案开发部, versionName=loadspace6]
//			Version [du=研发管理部, pdu=开发部, product=解决方案开发部, versionName=loadspace7]
//			Version [du=SingleAS, pdu=SingleAS, product=解决方案开发部, versionName=SDP]
//			Version [du=数字业务部, pdu=VNP, product=VMP, versionName=VMP30]

	/**
	 * 获得DU
	 * @param versionList
	 * @return
	 */
	public List<DU> getDUList(List<Version> versionList) {
		
		List<DU> duList = new ArrayList<DU>();
		DU du = null;
		
		for (Version version : versionList) {
			du = new DU();
			du.setName(version.getDu());
			duList.remove(du);
			duList.add(du);
		}
		return duList;
	}
	
	public List<PDU> getPduList(List<Version> versionList, String du)
	{
		List<PDU> pduList = new ArrayList<PDU>();
		PDU pdu = null;
		
		for (Version version : versionList) {
			
			if(du.equalsIgnoreCase(version.getDu()))
			{
				pdu = new PDU();
				pdu.setName(version.getPdu());
				pduList.remove(pdu);
				pduList.add(pdu);
			}
		}
		return pduList;
	}
	
	public List<Product> getProductList(List<Version> versionList, String du, String pdu)
	{
		List<Product> productList = new ArrayList<Product>();
		Product product = null;
		for (Version version : versionList) {
			
			if(du.equalsIgnoreCase(version.getDu()))
			{	
				if (pdu.equalsIgnoreCase(version.getPdu()))
				{
					product = new Product();
					product.setProductName(version.getProduct());
					productList.remove(product);
					productList.add(product);
				}
			}
		}
		return productList;
	}
	
	
	public List<CVersionName> getCVersionNameList(List<Version> versionList, String du, String pdu, String product)
	{
		List<CVersionName> cVersionNameList = new ArrayList<CVersionName>();
		CVersionName cVersionName = null;
		for (Version version : versionList) {
			
			if(du.equalsIgnoreCase(version.getDu()))
			{	
				if (pdu.equalsIgnoreCase(version.getPdu()))
				{
					cVersionName = new CVersionName();
					cVersionName.setName(version.getVersionName());
					cVersionNameList.remove(cVersionName);
					cVersionNameList.add(cVersionName);
				}
			}
		}
		return cVersionNameList;
	}
	
	
	public static void main(String[] args) {
		
		ListUtil mearsh = new ListUtil();
		
		List<Version> versionList = mearsh.getVersionList();
		
		List<DU> duList = mearsh.getDUList(versionList);
		System.out.println("~~~~~~~~~du~~~~~~~~~~~~");
		for (DU du1 : duList) {
			System.out.println(du1.getName());
		}
		
		System.out.println("~~~~~~~~~pdu~~~~~~~~~~~~");
		List<PDU> pduList = mearsh.getPduList(versionList, "数字业务部");
		
		for (PDU pdu1 : pduList) {
			System.out.println(pdu1.getName());
		}
		
		
		System.out.println("~~~~~~~~~product~~~~~~~~~~~~");
		List<Product> productList = mearsh.getProductList(versionList, "研发管理部","开发部");
		
		for (Product product : productList) {
			System.out.println(product.getProductName());
		}
		
		System.out.println("~~~~~~~~~versionName~~~~~~~~~~~~");
		List<CVersionName> VersionNameList = mearsh.getCVersionNameList(versionList, "研发管理部","开发部","ewind");
		
		for (CVersionName cVersionName : VersionNameList) {
			System.out.println(cVersionName.getName());
		}
	}
}

先remove后add,为了去除重复。

List使用remove方法时,需要判断两个对象是否相等,所以需要重写对象的equal方法。


运行结果:

~~~~~~~~~du~~~~~~~~~~~~
研发管理部
SingleAS
数字业务部
~~~~~~~~~pdu~~~~~~~~~~~~
VNP
VNP1
~~~~~~~~~product~~~~~~~~~~~~
ewind load
ewind
~~~~~~~~~versionName~~~~~~~~~~~~
loadspace7
applo





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值