我需要创建一个包含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
答案 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]]