java读取csv数据到list缓存,并对list集合分组统计结果

原创 2015年11月19日 16:24:02

今天遇到一个问题,需要将以上的csv表格数据(A列数据为设备的ip,B列数据为对应的设备端口号),读入list缓存,并对list根据左边ip数据分组统计每组ip数据的数据量(即每种ip有几个端口)。经过思考后,代码实现过程如下:

1、创建数据的javabean对象

2、读取csv数据存入list集合,list数据类型为之前创建的javabean对象

3、创建Map<ip字符串, 对象集合> map = new HashMap<ip字符串, 对象集合>();循环遍历list将list中的对象存入map中的对象集合。这样就将list中的数据分组统计在map集合中了。实现代码如下:

javabean对象:

public class Dkinfo{
        private String sbip;
	private String dk;
        public String getSbip() {
		return this.sbip;
	}

	public void setSbip(String sbip) {
		this.sbip = sbip;
	}

	public String getDk() {
		return this.dk;
	}

	public void setDk(String dk) {
		this.dk = dk;
	}
}
具体实现过程:

package Test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



public class TestWcSsv {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		List<Dkinfo> dkinfos = new ArrayList<Dkinfo>();//保存读取csv得到的数据
		Map<String, List<Dkinfo>> map = new HashMap<String, List<Dkinfo>>();//分组统计的map集合  
		
		String sbip = null;
		List<Dkinfo> mapDkinfos = new ArrayList<Dkinfo>();//map集合中每组ip的对应的对象集合
		BufferedReader reader = null;
		//读写csv数据到list(dkinfos)集合中
		try {
            reader = new BufferedReader(new FileReader("E:/my.csv"));//换成你的文件名
            String line = null;
            while((line=reader.readLine())!=null){
                    String data[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分
                	Dkinfo dkinfo = new Dkinfo();
                	dkinfo.setSbip(data[0]);
                	dkinfo.setDk(data[1]);
                	dkinfos.add(dkinfo);
                	System.out.println(data[0]+","+data[1]);
            }
            //遍历集合,将数据分组存入map集合
            for(Dkinfo dkinfo : dkinfos){
            	sbip = dkinfo.getSbip();
            	mapDkinfos = map.get(sbip);//获取对应sbip的集合,第一次获取时为空
            	if(mapDkinfos == null){//这里如果不进行为空判断,会报空指针异常
            		mapDkinfos = new ArrayList<Dkinfo>();
            	}
            	mapDkinfos.add(dkinfo);//将新添加的对象加入到对应的sbip的对象集合
            	map.put(sbip, mapDkinfos); //将每次新添加对象后的对象集合存入对应map中 
            }
            //遍历map集合
            for (Map.Entry<String, List<Dkinfo>> entry : map.entrySet()) {
            	System.out.println("设备ip = " + entry.getKey() + ", 端口数 = " + entry.getValue().size());
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
        	try {
				reader.close();
				dkinfos.clear();
				map.clear();
				mapDkinfos.clear();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
	}

}

由此,问题解决。当然在实际处理中,我得把得到的数据入库。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java读取csv文件并将内容插入到数据库

Java读取csv文件并将内容插入到数据库

JAVA读写CSV文件(包括arraylist遍历)

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi...

Java缓存使用ArrayList/HashMap的常见问题----ConcurrentModification

对于一些经常读取,但是很少写的数据,经常会使用缓存来存储。list/map可能在另一个地方正在被迭代使用。这个时候,会立即报ConcurrentModification的错误,而且错误发生的概率比较小...

java java local cache本地缓存的两种实现,一个基于list轮询一个基于timer定时

最近项目要引入缓存机制,但是不想引入分布式的缓存框架,所以自己就写了一个轻量级的缓存实现,有两个版本,一个是通过timer实现其超时过期处理,另外一个是通过list轮询。        首先要了解下...
  • songylwq
  • songylwq
  • 2013年07月24日 14:57
  • 11908

在java中,数据缓存的实现

首先 我们 先写两个类,一个是Cache(缓存类)和另外一个CacheManager(缓存管理类) 1    Cache类 package com.yhsx.service.impl; /*...

java读取txt文件内容,存放到list的方法

 package filetest; import java.io.BufferedReader; import java.io.File; import java.io.FileInpu...

java 导出csv格式(支持list的实体类)

做的网页项目,要导出pdf使用itext工具,要是excel就使用jxl的jar包,导出csv格式的话,就可以使用如下工具类,参考的博主是http://blog.csdn.net/xuxu198899...

List数据生成CSV文件

Function Index() As ActionResult             dataOutPut = New List(Of Categories)()             Di...

浅谈Java读取Csv实践(javacsv)

CSV是逗号分隔型取值格式的英文简称(英文全称为Comma Separated Values),是一种纯文本格式,用来存储数据。本文主要介绍Java读取Csv的方法。 AD: 在CSV中,数据...

工具类库系列(四)-CsvReader

第四个工具类:CsvReader CsvReader是用来支持读取Csv表格用的 Csv格式其实就是一个有固定格式的txt,一行每一列用英文','隔开 游戏项目中,很多游戏静态表。策划提...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java读取csv数据到list缓存,并对list集合分组统计结果
举报原因:
原因补充:

(最多只允许输入30个字)