cvs的java调用_java csv - 读写及其操作.

packagespt.csv;importjava.io.File;importjava.io.FileNotFoundException;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Map;importjava.util.Random;importspt.util.PropertyConfig;/*** 从1w多条记录中先选出8k条,然后在8k条记录中选出2k条,最后将2k条记录分成10组.*/

public classReadWriteDemo {/***@paramargs*/

public static voidmain(String[] args) {//if (args.length < 1)//throw new NullPointerException("请指定文件路径");

System.out.println("执行中...执行过程请不要关闭此窗口!");final int first_size =Integer.parseInt(PropertyConfig

.getProperty("first_size")); //初次提取长度(8k).

final int second_size =Integer.parseInt(PropertyConfig

.getProperty("second_size")); //初次提取(2k).

final int groupCount =Integer.parseInt(PropertyConfig

.getProperty("groupCount")); //分组个数(10).

String file = PropertyConfig.getProperty("input_file"); //源文件路径.

List fieldNames = null;try{

fieldNames=initFields();

Reader csv= newReader(file);//总记录.

List> totalList =csv.getResult(fieldNames);//初次提取的值(8k).

List> firstTaken =random(totalList, first_size);//再次提取的值(2k).

List> secondTaken =random(firstTaken,

second_size);//每组记录数(2百).

List> tmpTaken =secondTaken;for (int i = 0; i < groupCount; i++) {

List> AGroupTaken =random(tmpTaken,

second_size/groupCount);//除去上次已经使用的元素.

tmpTaken.removeAll(AGroupTaken);//在当前目录上输出(并验证是否存在).

String outputFile = null;//如果文件已存在,则自动命名.

int fileCount = 0;do{

outputFile= "result" + fileCount++ + ".csv";

}while (newFile(outputFile).exists());

Writer writer= newWriter(outputFile);//(集合)排序.

Collections.sort(AGroupTaken, newRecordDateComparator());

writer.write(fieldNames, AGroupTaken);

}

System.out.println("done!");

}catch(FileNotFoundException e) {

System.out.println("请指定正确的文件路径!");//TODO Auto-generated catch block

e.printStackTrace();

}

}/*** 随机产生新的列表(长度比原来小).

*

*@paramoriginalList

* 输入列表.

*@paramnew_size

* 新列表的长度.*/

public static List>random(

List> originalList, intnew_size) {if (new_size <= 0 || new_size >originalList.size())throw new IndexOutOfBoundsException("新列表的长度错误!");

List> newList = new ArrayList>(

new_size);//标识是否已被提取.

boolean[] taken = new boolean[originalList.size()];

Random r= newRandom();

Map map = null; //即将获取的元素.

int rIdx = 0;for (int i = 0; i < new_size; i++) {do{

rIdx=r.nextInt(new_size);

map=originalList.get(rIdx);

}while (taken[rIdx]); //如果发现已经提取,则重复操作.

taken[rIdx] = true; //标识已被提取.

newList.add(map);

}returnnewList;

}private static ListinitFields() {//所有字段.

List fieldNames = new ArrayList(14);

fieldNames.add("id");

fieldNames.add("AJMC");

fieldNames.add("JYAQ");

fieldNames.add("AJLB");

fieldNames.add("AJFAB");

fieldNames.add("AJZT");

fieldNames.add("BASJ");

fieldNames.add("FXSJ");

fieldNames.add("FASJSX");

fieldNames.add("FASJXX");

fieldNames.add("AJBH");

fieldNames.add("ZBX");

fieldNames.add("ZBY");

fieldNames.add("NYR");returnfieldNames;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值