数据合并
对数据进行合并
采用稀疏数组的思想变通解决
来源:深夜崩溃看星星突然灵光一现
灵感来的图
用处演示
代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> arr = new ArrayList<String>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("temporaryCub.txt"));
String line = null;
while ((line = br.readLine()) != null) {
arr.add(line);
}
} catch (Exception e2) {
e2.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(arr.size());
// 再转到二维数组里
String[][] str = new String[arr.size()][4];
for (int i = 0; i < arr.size(); i++) {
String[] mid = arr.get(i).split("\\~");
str[i][0] = mid[0];
str[i][1] = mid[1];
str[i][2] = mid[2];
str[i][3] = mid[3];
}
// 开始操作二维数组
// 名称 价格 数量 总价
// 海带丝~3~1~12.0
for (int row = 0; row < arr.size() - 1; row++) {
for (int row2 = row + 1; row2 < arr.size(); row2++) {
if (str[row2][0].equals(null) || str[row2][0].equals("x")) {
} else if (str[row][0].equals(str[row2][0])) {
double m_summoney = Double.valueOf(str[row][3]);
double n_summoney = Double.valueOf(str[row2][3]);
double rest = m_summoney + n_summoney;
str[row][3] = new Double(rest).toString();
// 获得数量
int m_num = Integer.valueOf(str[row][2]);
int n_num = Integer.valueOf(str[row2][2]);
int numsum = m_num + n_num;
str[row][2] = new Integer(numsum).toString();
// 给第二个值赋值为空
str[row2][0] = "0";
str[row2][1] = "0";
str[row2][2] = "0";
str[row2][3] = "0";
}
}
}
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("temporaryCub2.txt"));
for(int i=0;i<str.length;i++) {
if(str[i][0]!=null&&str[i][0]!="0"){
StringBuilder sb=new StringBuilder();
sb.append(str[i][0]+"~").append(str[i][1]+"~").append(str[i][2]+"~").append(str[i][3]);
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}