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
Algorithm 基于Java流的排序算法_Algorithm_Sorting_Java Stream - Fatal编程技术网

Algorithm 基于Java流的排序算法

Algorithm 基于Java流的排序算法,algorithm,sorting,java-stream,Algorithm,Sorting,Java Stream,有一个随机排列的字符串货币ISO代码列表:瑞士法郎、美元、澳元、欧元、0995、AED。。。等等 是否有一种算法可以按以下顺序对其进行排序:首先只应按主要货币美元、瑞士法郎、欧元的顺序排列,然后按字母顺序排列所有其他货币,然后是所有数字货币代码 到目前为止,我只需创建3个单独的列表,对它们进行相应的排序,然后制作list.addAll,就可以分3步完成。非常感谢您的帮助创建自定义比较器将是解决此问题的理想方法 公共类CurrencyComparator实现Comparator{ 公共静态无效字符

有一个随机排列的字符串货币ISO代码列表:瑞士法郎、美元、澳元、欧元、0995、AED。。。等等

是否有一种算法可以按以下顺序对其进行排序:首先只应按主要货币美元、瑞士法郎、欧元的顺序排列,然后按字母顺序排列所有其他货币,然后是所有数字货币代码


到目前为止,我只需创建3个单独的列表,对它们进行相应的排序,然后制作list.addAll,就可以分3步完成。非常感谢您的帮助

创建自定义比较器将是解决此问题的理想方法

公共类CurrencyComparator实现Comparator{ 公共静态无效字符串[]args{ List currencyList=Arrays.asListCHF,美元,澳元,欧元,0995,AED; currencyList.sortnew CurrencyComparator; currencyList.forEachSystem.out::println; } 私有int getTypeOrderString cur{ 开关电流{ 案例美元: 返回0; 案例CHF: 返回1; 案例欧元: 返回2; 违约: 返回电流匹配[A-Za-z]*?3:4; } } @凌驾 公共整数比较cur1,字符串cur2{ int-typeOrder1=getTypeOrdercur1; int-typeOrder2=getTypeOrdercur2; 如果typeOrder1!=typeOrder2{ 返回Integer.comparetypeOrder1,typeOrder2; } 返回cur1.compareTocur2; } } 它将产生以下输出

USD
CHF
EUR
AED
AUD
0995

创建一个定制的比较器是解决这个问题的理想方法

公共类CurrencyComparator实现Comparator{ 公共静态无效字符串[]args{ List currencyList=Arrays.asListCHF,美元,澳元,欧元,0995,AED; currencyList.sortnew CurrencyComparator; currencyList.forEachSystem.out::println; } 私有int getTypeOrderString cur{ 开关电流{ 案例美元: 返回0; 案例CHF: 返回1; 案例欧元: 返回2; 违约: 返回电流匹配[A-Za-z]*?3:4; } } @凌驾 公共整数比较cur1,字符串cur2{ int-typeOrder1=getTypeOrdercur1; int-typeOrder2=getTypeOrdercur2; 如果typeOrder1!=typeOrder2{ 返回Integer.comparetypeOrder1,typeOrder2; } 返回cur1.compareTocur2; } } 它将产生以下输出

USD
CHF
EUR
AED
AUD
0995