矢量的Arraylist

时间:2018-05-16 10:56:35

标签: java arraylist vector

我需要创建一个包含6个元素向量的ArrayList(向量是双重类型),但无法找到正确执行它的方法。我似乎找不到为我的ArrayList声明的正确类型。

有人能帮助我吗?

我的代码草稿将是:

public static ArrayList<> readFile(File file) throws IOException{

    // Array containing all spacecraft states
    ArrayList<> manPlan = new ArrayList<>();

    // File reader
    BufferedReader reader = Files.newBufferedReader(file.toPath(), charset);

    String line;
    while ((line = reader.readLine()) != null) {
        if (validLine.matcher(line).find()){

            // Build AbsoluteDate
            String[] columns = line.split("\\s+");

            // Read orbital elements
            double var1 = Double.parseDouble(columns[4]);
            double var2 = Double.parseDouble(columns[5]);
            double var3 = FastMath.toRadians(Double.parseDouble(columns[6]));
            double var4 = FastMath.toRadians(Double.parseDouble(columns[7]));
            double var5 = FastMath.toRadians(Double.parseDouble(columns[8]));
            double var6 = FastMath.toRadians(Double.parseDouble(columns[9]));

            double variables[] = {var1, var2, var3, var4, var5, var6};

            try {
                manPlan.add(variables);
            } catch (OrekitException e1) {
                logger.error("Orekit error, failed to build SpacecraftState", e);
            }
        }

    }

    reader.close();

    return manPlan;
}

}

非常感谢!

oz380

3 个答案:

答案 0 :(得分:1)

假设这是矢量:

class MyVector {
    Double aDouble;
    Double bDouble;
}

您可以创建一个列表:

ArrayList<MyVector> myVectors = new ArrayList<>();

答案 1 :(得分:1)

根据您的代码,您将创建一个包含6个值的数组(您称为向量),并且您希望将这些数组插入列表中。您可以创建double数组列表。

ArrayList<double[]> manPlan = new ArrayList<>();

有关List<double[]>有效但List<double>无效的原因的小解释。

当您声明使用泛型类型的变量(如List<>)时,您需要提供一个类型。该类型不能是原始类型(double,int,boolean,...)。

它解释了为什么List<double>不被接受你会发现每个基本类型都有一个类包装来修复这个问题,这里你会使用`List(注意大写)。

现在,由于您需要一个数组,因此使用double[]作为类型是有效的,因为该类型是一个数组,而不是基元类型。

感谢zapl纠正了我

答案 2 :(得分:0)

好的我认为你可以使用Java collections

向量 - 这个解决方案将是威胁安全link to doc

我们应该使用java集合的原因:stackoverflow link

    Set<String> files = new HashSet<String>();
    files.add("1|2|3|4|5|6");
    files.add("7|8|9|10|11|12");

    Vector<Vector<Double>> vectors = new Vector<Vector<Double>>();
    for(String line : files) {
        Vector<Double> doubles = new Vector<Double>();
        String[] items = line.split("\\|");
        for(int index = 0; index < items.length; index++) {
            doubles.add(new Double(items[index]));
        }
        vectors.add(doubles);
    }
    System.out.println(vectors);

输出: [[7.0,8.0,9.0,10.0,11.0,12.0],[1.0,2.0,3.0,4.0,5.0,6.0]]