一:题目--文章需要解决的问题
题目的意思也可以表述为:
将一堆项集数据,根据数据的第一列值是否相同,来判断第二列的值是否该进行合并,相当于使之变成序列数据集。
题目的样例1表述:
输出的数据格式 (可以先用Excel进行升序处理,便于userID相等的呆在一起)
a,v1
a,v2
b,v3
a,v4
c,v3
c,v5
数据预处理后后的结果:
a,v1|v2|v4
b,v3
c,v3|v5
题目的样例2表述:
userid value
0 1
0 3
0 5
1 2
1 4
数据预处理后的结果:
userid value
0 1 3 5
1 2 4
二:题目解决的思路
主要判断当前行的userid是否与上一行的userid相等,若相等,则进行添加,使之成为一行即成为一个单独的序列;若不想等,则新起一行,成为一个新的序列的开头数据。
借助list,hashmap,map的value,key等Java的数据结构进行数据操作;借助stringBuffer,StringBuilder,BufferedWriter,BufferReader等进行文件相关数据读取,写入等操作;利用泛型方法进行数据的拼接,利用迭代器进行集合的遍历。
三:具体代码及注释
package temp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class mosaicFile2 {
public static void WriteCSV2(File csv, StringBuffer sBuffer) {
BufferedWriter bw;
/*
* BufferedWriter类:用于加快写入的速度。
* 构造方法: BufferedWriter bf = new BufferedWriter(Write out)
* 主要方法: void write(): 写入单个字符
* void newLine(): 写入一个行分隔符
* void close(): 关闭该流
*
* */
try {
bw = new BufferedWriter(new FileWriter(csv, true));

本文介绍如何使用Java处理CSV格式数据,根据第一列值合并相同key的第二列值,形成序列数据集。通过比较当前行与上一行的用户ID,结合Java的数据结构和文件操作方法完成数据预处理。
最低0.47元/天 解锁文章
46

被折叠的 条评论
为什么被折叠?



