使用自定义对象对Java Vector进行排序和优化

时间:2010-09-03 14:42:33

标签: java sorting collections vector

我必须使用“class Row_i”来优化Java Vector - 对象(见下文),它描述了数字范围的两个系列(A和B)(startPos - endPos)在每一行中是相等的。 必须对该向量进行排序和优化。

分组/排序标准:

1 - 按id_A分组行,
2 - 按id_B分组行,
3 - 由startPosA分组行,
4 - 由startPosB进行行分组,

因此排序后必须删除多余的行。

冗余行:
1.如果startPosA(i + 1)值是下一个数字startPosA(i)值

只有当PosB符合相同标准时,才会发生行优化。

矢量未排序: ..................................

id_A id_B sPosA - ePosA sPosA - ePosA

2392 ++ 4061 ++ 3158 - 3163 ++ 13222 - 13227;
1192 ++ 2064 ++ 287 - 290 ++ 257 - 260;
2392 ++ 1063 ++ 480 - 590 ++ 1950 - 1960;
1092 ++ 1555 ++ 7385 - 7395 ++ 193 - 203;
1192 ++ 2064 ++ 273 - 286 ++ 243 - 256;
1192 ++ 2064 ++ 291 - 294 ++ 261 - 264;

矢量分类和优化

1092 ++ 1555 ++ 7385 - 7395 ++ 193 - 203;
1192 ++ 2064 ++ 273 - 294 ++ 243 - 264;
2392 ++ 1063 ++ 480 - 590 ++ 1950 - 1960;
2392 ++ 4061 ++ 3158 - 3163 ++ 13222 - 13227
.........................

取决于实施收集 - 大小各不相同。在一个案例中是200 - 5000个对象 有没有人知道如何解决这个问题,我有效率。

我会感激任何帮助。


Java中的全部课程:
对象 - 类“Row_i” - > http://pastebin.com/wc3ytUqf

@Missing Faktor:谢谢你的暗示!!

2 个答案:

答案 0 :(得分:1)

在创建实例时,使用SortedSet作为变量/ field / return-type和TreeSet。让你的Row_i类实现Comparable或创建一个实现Comparator的类,并在创建树集时传递比较器(比较器应该是一个单例)。

除非您需要随机访问,否则这是最佳解决方案。

编辑:我为Comparable http://pastebin.com/5Z3GBNrV

撰写了一个示例

答案 1 :(得分:0)

我真的不明白你正在做的一切,但是如果你想要排序和删除重复,那么拥有Vector似乎不是正确的集合选择。 TreeSet怎么样?

为了保证没有重复和排序顺序,你的类Row_i需要覆盖equals()和hashCode()方法以及实现Comparable接口,除非你决定使用Comparator。