【发布时间】:2013-12-29 21:34:42
【问题描述】:
所以我有以下问题。我从 .txt 文件中解析出文本,该文本包含我需要收集的两组数据 - 特定 ID 和一组链接到每个 ID 的双数字。例如:
ID1:
[3.21
23.3
15
.
.]
ID2:
[.
.
.].
我想象的收集数据的方式是通过向量 - 矩阵,或者
Vector<Vector<String>> matrix = new Vector<Vector<String>>();。所以基本上我会将每个 ID 读取为矩阵中每一行的第一个元素(位置 0),然后我将分别读取以下行中的双精度数作为字符串。我稍后会进行转换。现在检查我的代码:
Vector<Vector<String>> matrix = new Vector<Vector<String>>();
Vector<String> array = new Vector<>();
while(s.hasNext())
{
String data = s.next();
Matcher matcherDouble = patternDouble.matcher(data);
Matcher matcherID = patternID.matcher(data);
if(matcherID.find())
{
System.out.println("found: " + matcherID.group(1));
/*********************************/
if(!(array.isEmpty()))
{
matrix.add(array);
}
/**********************************/
array.clear();
array.add(matcherID.group(1));
}
if(matcherDouble.find())
{
System.out.println("found: " + matcherDouble.group(3));
array.add(matcherDouble.group(3));
}
}
我正确解析了所有内容,因此这部分代码足以解释我的问题。所以因为我需要一个矩阵,所以我决定单独收集数组,同时将它们添加到矩阵中。根据不同 ID 的数量,我将添加尽可能多的数组。
在通过if( matcherID.find()) 的第一个循环中,我不会将数组添加到矩阵中,因为那是我获得第一个 ID 并且在将数组添加到矩阵之前仍然需要其他元素的时候。每次之后,我的条件if(!( array.isEmpty()))都会满足,我会在矩阵中添加另一个数组。
我的问题是,一旦我将第一个数组添加到矩阵中 - 当我更改数组时,矩阵开始动态变化。例如,当我在下一步中执行以下行array.clear() 时添加了新数组后,它会从我的矩阵中删除数组吗?我怎样才能防止这种情况?我以为它会存储在矩阵中,但是矩阵和数组保持连接。
【问题讨论】:
-
你的问题很不清楚。请提供一小部分输入样本、您的实际输出和预期输出。
-
我的 .txt 文件输入类似于这样的统计信息 a1 population1: [4.23 +9.98 15 +3.23 +9.98 29] population2: [20 +6.5 13 +1.23 +2.98] .
-
我的矩阵应该像 [[population1, 4.23, 9.98, 15, 3.23, 9.98, 29], [population2, 20, 6.5, 13, 1.23, 2.98]] 但我得到了什么这种情况是 [[population2, 20, 6.5, 13, 1.23, 2.98], [population2, 20, 6.5, 13, 1.23, 2.98]]