如何以一个序列顺序为基准,来排另一个组数据的顺序?比如我有一个基准序列,顺序是ST NI FL STU OL然后我有个集合,每个对象包含了一些属性,比如OL 3 NPTST 2 SA-106STU 16 102 B7NI 1 SA-106ST 3 SA-106FL 3 RF
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/31 05:52:01
![如何以一个序列顺序为基准,来排另一个组数据的顺序?比如我有一个基准序列,顺序是ST NI FL STU OL然后我有个集合,每个对象包含了一些属性,比如OL 3 NPTST 2 SA-106STU 16 102 B7NI 1 SA-106ST 3 SA-106FL 3 RF](/uploads/image/z/13567555-19-5.jpg?t=%E5%A6%82%E4%BD%95%E4%BB%A5%E4%B8%80%E4%B8%AA%E5%BA%8F%E5%88%97%E9%A1%BA%E5%BA%8F%E4%B8%BA%E5%9F%BA%E5%87%86%2C%E6%9D%A5%E6%8E%92%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%BB%84%E6%95%B0%E6%8D%AE%E7%9A%84%E9%A1%BA%E5%BA%8F%3F%E6%AF%94%E5%A6%82%E6%88%91%E6%9C%89%E4%B8%80%E4%B8%AA%E5%9F%BA%E5%87%86%E5%BA%8F%E5%88%97%2C%E9%A1%BA%E5%BA%8F%E6%98%AFST+NI+FL+STU+OL%E7%84%B6%E5%90%8E%E6%88%91%E6%9C%89%E4%B8%AA%E9%9B%86%E5%90%88%2C%E6%AF%8F%E4%B8%AA%E5%AF%B9%E8%B1%A1%E5%8C%85%E5%90%AB%E4%BA%86%E4%B8%80%E4%BA%9B%E5%B1%9E%E6%80%A7%2C%E6%AF%94%E5%A6%82OL+3+NPTST+2+SA-106STU+16+102+B7NI+1+SA-106ST+3+SA-106FL+3+RF)
如何以一个序列顺序为基准,来排另一个组数据的顺序?比如我有一个基准序列,顺序是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)
这就是数值转换排序.先把要排列的数据以特定算法约束.转换成数值并将其对应绑定后,我们就不用再对原数据进行分段比较了,而是直接对它的对应绑定值进行比较就达到了排序条件目的了……
没有排序不了的数据,关键在于你以什么的算法和逻辑去约束它!
希望我手工打了这么多的字都帮助到你!晚安!