目前我正在做列表的工作。我偶然发现了这个问题(我的意思是,选择答案)。List of Lists of Lists
@Mario Fusco指出要对类和对象进行更好的抽象。老实说,我不明白用例是否适用于所有场景。例如,我有一个列表(Of list ):
[[2, 5, 6, 7], [8, 10, 12, 13, 15], [6, 13, 23, 25, 30, 34], [16, 25], [5, 16, 25, 30], [6, 25, 30], [1, 5, 9, 13, 14], [14, 25], [2, 6, 12, 34], [2, 5, 25], [2, 3, 31], [1, 16, 19], [2, 34], [3, 6], [8, 10, 12, 13, 15], [5, 10], [1, 8, 14], [3, 5], [1, 2, 8, 9, 13, 15], [3, 6, 13], [8, 15], [25, 34], [25, 31], [5, 23], [30, 31], [8, 10, 12, 13, 15], [30, 34], [8, 10, 12, 13, 15], [25, 31], [25, 31], [5, 23, 34], [3, 5, 8, 10, 12, 13, 15], [2, 8, 9, 12, 13, 15], [2, 15]]
/* I created it using ArrayList<ArrayList<Integer>> and few previous processing. 我需要对它做一些简单的处理,比如统计2,5等的出现次数,在list(of list)中查找重复的集合等等。为内部列表创建一个类,然后将这些对象添加到列表中(每个对象包含这些数字的ArrayList ),这会是智能的吗?我对目前可用的选项感到有点困惑,需要找出哪种方法应该更好地工作。如果你能给我解释一些例子,用例,我会感到不知所措。
编辑:我来自Python背景,对播放列表和列表列表等非常友好。但是在大型数据集上工作有一点问题(没有攻击性的意图,有像Cython这样的好东西,但它只是为了满足需求),因此转移到Java来解决部分问题。
我可以改变问题的方向,询问哪种方法更适合内存管理和CPU角度吗?子列表的数量可能会增长到近50万到数百万,每个子列表包含2-10个数字。
发布于 2013-04-30 18:54:45
和我需要对它做一些简单的处理,比如计算2,5等的出现次数,在list(of list)中查找重复集合等。
如果您只是对数字列表的列表进行简单的处理,而这些数字实际上并不代表其他任何东西,那么您的设置是很好的-没有必要仅仅为了它而添加类。
您链接到的答案是指这样一个事实:在大多数实际情况下,嵌入的数字列表通常表示OO模型中的某种对象,而不仅仅是数字本身的列表。如果是这样,那么对于那些阅读代码的人来说,如果创建一个新的类来更明确地描述这个“内部列表”实际上代表什么,就会更清楚。
发布于 2013-04-30 18:56:57
和我需要对它做一些简单的处理,比如计算2,5等的出现次数,在list(of list)中查找重复集合等。为内部列表创建一个类,然后将这些对象添加到列表中(每个对象包含这些数字的ArrayList )是否明智?
看起来你需要做的就是对数据进行简单的操作。在这种情况下,您最好使用list of List列表。因为它使你的代码足够简单,易于维护和高效。因为,您希望您的算法高效,并可能避免不必要的复杂性。
@Mario Fusco指出要对类和对象进行更好的抽象。
通常,如果您使用list of list of list对业务对象进行建模,则不建议使用它,因为正如@Mario Fusco正确指出的那样,它将导致维护场景和可读性问题。在对业务对象进行建模时,您应该首选使用领域行话。
发布于 2013-04-30 18:55:15
我建议你走面向对象的道路,创建一个自定义对象列表,它在内部创建一个整数列表。通过这种方式,您可以重写equals and hashcode,还可以编写您想要的任何其他方法。
public class CustomObject {
List<Integer> intlist;
public List<Integer> getIntlist() {
return intlist;
}
public void setIntlist(List<Integer> intlist) {
this.intlist = intlist;
}
@Override
public int hashCode() {
//code here
}
@Override
public boolean equals(Object obj) {
//code here
}
}我可以在这里编写方法来检查整数的计数,并且equals可以比较两个对象并发现重复的
https://stackoverflow.com/questions/16298046
复制相似问题