Java一个文件即可添加文件

时间:2018-06-27 19:55:18

标签: java arrays list append

我有两个数据文件Test1和Test2。

Test1数据:

1.0  2.0  3.0
2.0  4.0  5.0
3.0  1.0  2.0
4.0  9.0  2.0
7.0  0.0  0.0
8.0  7.0  1.0
10.0 2.0  5.0
11.0 0.0  0.0
13.0 1.0  1.0
15.0 1.0  1.0
17.0 2.0  2.0

Test2.txt

 5.0   2.0   5.0   6.0
 6.0   1.0   2.0   9.0
 9.0   0.0   1.0   3.0
 12.0  0.0   0.0   0.0
 14.0  1.0   1.0   1.0

test4.txt(输出文件)

 1.0  2.0  3.0
 2.0  4.0  5.0
 3.0  1.0  2.0
 4.0  9.0  2.0
 5.0   2.0   5.0   6.0
 6.0   1.0   2.0   9.0
 7.0  0.0  0.0
 8.0  7.0  1.0
 9.0   0.0   1.0   3.0
 10.0 2.0  5.0
 11.0 0.0  0.0
 12.0  0.0   0.0   0.0
 13.0 1.0  1.0
 14.0  1.0   1.0   1.0
 15.0 1.0  1.0
 17.0 2.0  2.0

我的代码:

public class Insertelementfile {
public static void main(String args[])throws IOException{
    Scanner X=new Scanner(new File("c:\\test1.txt"));
    Scanner Y=new Scanner(new File("C:\\test2.txt"));
    PrintWriter write1=null;
     write1= new PrintWriter(new File("C:\\test4.txt"));
    double a=0.0,d=0.0;
    int i=0,j=0,k=0;
    List<Double> list1=new ArrayList<>();
    List<Double>list2=new ArrayList<>();
    double[]arrX=new double[11];
    double[]arrY=new double[5];
    double[] s = new double[16];
    while(X.hasNext()){
        a = X.nextDouble();
        list1.add(a);
        double b=X.nextDouble();
        double c=X.nextDouble();
    }
    while(Y.hasNext()) {
        d = Y.nextDouble();
        list2.add(d);
        double e=Y.nextDouble();
        double f=Y.nextDouble();
        double g=Y.nextDouble();
    }
    for(int i1=0;i1<list1.size();i1++) {

        arrX[i1]=list1.get(i1);
    }

    for(int j1=0;j1<list2.size();j1++){
        arrY[j1]=list2.get(j1);
    }
    while(i<arrX.length && j<arrY.length){
        if (arrX[i] < arrY[j]){
            s[k]=arrX[i];
            i++;
        }
        else{
            s[k] = arrY[j];
            j++;
        }
        k++;
    }

    // Copy the remaining elements in arrX to s
    if (i < arrX.length) {
        // arraycopy(source, sourcepos, dest, destpos, numOfElements)
        System.arraycopy(arrX, i, s, k, (arrX.length - i));
    }


    // Copy the remaining elements in arrY to s
    if (j < arrY.length) {
        // arraycopy(source, sourcepos, dest, destpos, numOfElements)
        System.arraycopy(arrY, j, s, k, (arrY.length - j));
    }
    System.out.println( Arrays.toString(s));
    write1.write(Arrays.toString(s));
    write1.flush();
    write1.close();
}
}

我得到的输出是这样的:   [1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0、9.0、10.0、11.0、12.0、13.0、14.0、15.0、17.0]   但是剩余的列不在我的输出中。我将两个文件的第一列都作为我的键属性,并根据那里的顺序插入元素。我该怎么做才能得到我的欲望输出?

1 个答案:

答案 0 :(得分:0)

我会创建一个类来保存您的数据。

public class MyData implements Comparable<MyData>{
    public ArrayList<Double> data;

    public MyData(){
        data = new ArrayList<Double>();
    }

    @Override
    public int compareTo(MyData otherData) {
        if(otherData == null){
            return 1;
        }
        if(data.size() != 0 && otherData.data.size() != 0){
            if(otherData.data.get(0) >= data.get(0)){
                return -1;
            } else {
                return 1;
            }
        }
        return 0;
    }

}

然后可以保留一个ArrayList,将一行值读入一个MyData对象。然后,您可以使用Collections.sort(该arraylist)对其进行排序,然后对其进行迭代并将其打印到文件中。