如何以一个序列顺序为基准,来排另一个组数据的顺序?比如我有一个基准序列,顺序是ST NI FL STU OL然后我有个集合,每个对象包含了一些属性,比如OL 3 NPTST 2 SA-106STU 16 102 B7NI 1 SA-106ST 3 SA-106FL 3 RF
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/22 01:52:25
如何以一个序列顺序为基准,来排另一个组数据的顺序?比如我有一个基准序列,顺序是ST NI FL STU OL然后我有个集合,每个对象包含了一些属性,比如OL 3 NPTST 2 SA-106STU 16 102 B7NI 1 SA-106ST 3 SA-106FL 3 RF
如何以一个序列顺序为基准,来排另一个组数据的顺序?
比如我有一个基准序列,顺序是ST NI FL STU OL
然后我有个集合,每个对象包含了一些属性,比如
OL 3 NPT
ST 2 SA-106
STU 16 102 B7
NI 1 SA-106
ST 3 SA-106
FL 3 RF STD S-105
现在我要排序,首先按第一个属性按照上面的基准排列,如果第一个属性相等,则根据第二个属性排列,依次类推
结果如下
ST 2 SA-106
ST 3 SA-106
NI 1 SA-106
FL 3 RF STD S-105
STU 16 102 B7
OL 3 NPT
我对于程序排序的了解,基本的就冒泡排序法,以及刚又了解了些面向对象里面的Icomparable借口,Icompare接口,不过这两个接提供的演示要不是按数值大小排序,要不是按照首写字母排序,都不是我上面说的按照一个序列基准来排列
如何以一个序列顺序为基准,来排另一个组数据的顺序?比如我有一个基准序列,顺序是ST NI FL STU OL然后我有个集合,每个对象包含了一些属性,比如OL 3 NPTST 2 SA-106STU 16 102 B7NI 1 SA-106ST 3 SA-106FL 3 RF
很多方法.可以用 分段匹配、格式转换、数值转换等,但无论哪种方法都很麻烦.我在排序IP地址时情况和你要求的就差不多.列如,将下面杂乱无章的IP字符串排列和你的问题是类似的:
排列前(乱序):
193.10.10.10
192.168.90.80
192.168.1.230
192.169.10.20
192.168.2.120
192.168.2.100
192.168.1.200
排列后(升序):
192.168.1.200
192.168.1.230
192.168.2.100
192.168.2.120
192.168.90.80
192.169.10.20
193.10.10.10
排列原理(数值转换比较排列)
192.168.1.200 int = 192*255*255*255+168*255*255+1*255+200 ; (值:3232235976)
192.168.1.230 int = 192*255*255*255+168*255*255+1*255+230 ; (值:3232236006)
192.168.2.100 int = 192*255*255*255+168*255*255+2*255+230 ; (值:3232236132)
192.168.2.120 int = 192*255*255*255+168*255*255+2*255+120 ; (值:3232236152)
192.168.90.80 int = 192*255*255*255+168*255*255+90*255+80 ; (值:3232258640)
192.169.10.20 int = 192*255*255*255+169*255*255+10*255+20 ; (值:3232303636)
193.10.10.10 int = 193*255*255*255+10*255*255+10*255+10 ; (值:3238660618)
这就是数值转换排序.先把要排列的数据以特定算法约束.转换成数值并将其对应绑定后,我们就不用再对原数据进行分段比较了,而是直接对它的对应绑定值进行比较就达到了排序条件目的了……
没有排序不了的数据,关键在于你以什么的算法和逻辑去约束它!
希望我手工打了这么多的字都帮助到你!晚安!