我有一个Text File
有以下行
1) 2,3 3,2 4,5
2) 1,3 4,2 6,13
3) 1,2 4,2 5,5
4) 1,5 2,2 3,2 5,4 7,3 6,6
文本文件的行数是已知的(i,e 4)。对数字(例如:2,3)对于每一行是可变的。而数字对应的属性。
所以,为了表示这些值,我计划有一个数组链表的数组。
选择我的原因是:
1:Since i know the number of lines is 4. So it will be an array
。
2:Each line has a variable number of pairs. So, i will have a linked list representation for it
。
3:The pair values each represents a property so i will have an array size two for it. One index for each property
。
考虑到以上三点,我将有Array(size 4) of LinkedList of an Array(size 2)
。
以下是我用Java表示的方式(我是Java的新手,我必须承认我还不知道它是否正确)。
static ArrayList<Integer[]>[] graph = (ArrayList<Integer[]>[]) new ArrayList[200];
现在,考虑到上面的图形变量已经正确初始化,有人可以告诉我如何用数据填充它。如果你有关于初始化的其他一些建议或我在概念上如何分解问题,请分享。
答案 0 :(得分:4)
如果我是你,我会保持简单。只需使用
之类的东西List<List<List<Integer>>>
甚至更好,为内部类型创建自己的类。
List<PairList>
或类似内容,其中PairList
扩展(或包含)ArrayList<Pair>
。
答案 1 :(得分:1)
使用收集框架。
ArrayList<ArrayList<ArrayList<Integer>>>
答案 2 :(得分:1)
虽然你的思维过程是可以理解的,但我认为你做出了错误的决定(可能是由于缺乏Java经验造成的) - 这是我建议的答案:
ArrayList
。它是使用数组实现的List
(元组)。LinkedList
,因为它通常比ArrayList
慢。这两种实现都满足List
接口,因此您可以将它们互换使用。现在,让我们假设容器类型看起来像这样(你应该给变量和类本身更好的名字):
class Pair {
public final int a;
public final int b;
Pair(int a, int b){
this.a = a;
this.b = b;
}
}
然后,您可以使用以下内容创建数据结构:
final int lines = 42; // the number of lines
List<List<Pair>> data = new ArrayList<List<Pair>>(lines);
使用
填充数据for(String line : input){
final List<Pair> lineList = new ArrayList<Pair>();
lineList.addAll(extractPairsFromLine(line));
data.add(lineList);
}
其中extractPairsFromLine
是一种采用String
并返回List<Pair>
的方法。