java数据合并

数据合并

对数据进行合并


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

在这里插入图片描述用处演示
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
代码:

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理想艺术!马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值