Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义对象对Java向量进行排序和优化_Java_Sorting_Collections_Vector - Fatal编程技术网

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

使用自定义对象对Java向量进行排序和优化,java,sorting,collections,vector,Java,Sorting,Collections,Vector,我必须用“class Row_I”对象(见下文)优化Java向量,它描述了两个系列(A和B)的数字范围(startPos-endPos)在每一行中是相等的。 必须对该向量进行排序和优化 分组/排序标准: 1-按id_A进行的行分组, 2-按id_B进行的行分组, 3-按startPosA进行的行分组, 4-按startPosB进行的行分组 因此,排序后必须删除冗余行 冗余行: 1.如果startPosA(i+1)值是下一个数字startPosA(i)值 只有当PosB满足相同的标准时,行优化才会

我必须用“class Row_I”对象(见下文)优化Java向量,它描述了两个系列(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”->


@法克托小姐:谢谢你的提示

我不太了解您正在做的每件事,但是如果您想排序和删除重复项,使用向量似乎不是正确的集合选择。来棵树怎么样


为了保证没有重复和排序顺序,您的类Row_i需要重写equals()和hashCode()方法,并实现可比较的接口,除非您决定使用比较器。

我并不完全理解您所做的一切,但是如果您想要排序和删除重复项,使用向量似乎不是正确的收集选择。来棵树怎么样


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

在创建实例时,将SortedSet用作变量/字段/返回类型和树集。让您的Row_i类实现Comparable或创建一个实现Comparator的类,并在创建树集时传递Comparator(Comparator应该是单例)

这是最好的解决方案,除非您需要随机访问


编辑:我写了一个可比较的示例

在创建实例时使用SortedSet作为变量/字段/返回类型和TreeSet。让您的Row_i类实现Comparable或创建一个实现Comparator的类,并在创建树集时传递Comparator(Comparator应该是单例)

这是最好的解决方案,除非您需要随机访问


编辑:我写了一个可比较的例子

谢谢,不需要随机访问。bevor从未使用过集合,你能写出一个更准确的例子吗?我通过简单的for-loop和if-query(见下文)解决了这个问题。但它不能正常工作。@xaoc:将您的代码发布到pastebin.com上,并将其链接放在comments.class Row_i->,class UpdateTable->,@Missing Faktor:谢谢您的提示!!我自己的“预解决方案”,但效果不好。类UpdateTable->,因为如果我成功地将行匹配条件1-3,然后再匹配条件4 n次。因此,总结(分组)到此结束@法克托小姐:谢谢你的提示!!谢谢,不需要随机访问。bevor从未使用过集合,你能写出一个更准确的例子吗?我通过简单的for-loop和if-query(见下文)解决了这个问题。但它不能正常工作。@xaoc:将您的代码发布到pastebin.com上,并将其链接放在comments.class Row_i->,class UpdateTable->,@Missing Faktor:谢谢您的提示!!我自己的“预解决方案”,但效果不好。类UpdateTable->,因为如果我成功地将行匹配条件1-3,然后再匹配条件4 n次。因此,总结(分组)到此结束@法克托小姐:谢谢你的提示!!