java数据合并

数据合并

对数据进行合并


采用稀疏数组的思想变通解决
来源:深夜崩溃看星星突然灵光一现
灵感来的图

java数据合并_第1张图片用处演示
java数据合并_第2张图片
java数据合并_第3张图片java数据合并_第4张图片
代码:

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();
		}
	}
}

你可能感兴趣的:(Java笔记)