我试图用C#做Java中的事情。在C#中:
Array.sort(array1, array2);
其中array1是键,array2是值
https://msdn.microsoft.com/en-us/library/85y6y2d3(v=vs.110).aspx
想知道Java是否内置了类似内容,或者我们必须进行某种自定义。
答案 0 :(得分:3)
没有什么是微不足道的,但转换为自动排序的TreeMap
可能是最佳方式:
Map<String, int> map = new TreeMap<String, int>();
for (var i = 0; i < array1.length; i++)
map.put(array1[i], array2[i]);
迭代:
for (Map.Entry<String, int> entry : map.entrySet()) {
// do stuff
}
答案 1 :(得分:1)
如果您使用的是Java 8,则可以根据array2
创建一个array1
流,如下所示:
int[] array3 = IntStream.range(0, array1.length).boxed()
.sorted(Comparator.comparingInt(i -> array1[i]))
.mapToInt(i -> array2[i])
.toArray();
希望你能看到它是如何工作的:它产生一个索引流,根据第一个数组中的值对它们进行排序,将它们映射到第二个数组中的值,然后转换回数组。必须使用box和unbox只允许自定义排序(IntStream
由于某种原因不支持)。
以下是一些示例代码:
int[] array1 = { 5, 4, 3, 2, 1 };
int[] array2 = { 10, 20, 30, 40, 50 };
System.out.println(Arrays.toString(IntStream.range(0, array1.length).boxed()
.sorted(Comparator.comparingInt(i -> array1[i]))
.mapToInt(i -> array2[i]).toArray()));
这假设类型为int[]
,但它可以轻松转换为任何其他类型。同样的方法适用于可索引的集合。
如果数组是对象,那么您可以使用Arrays.sort(T[], Comparator)
进行排序。遗憾的是,Java并没有提供原始类型的等价物 - 假设您希望按其自然顺序排序。
答案 2 :(得分:0)
我不知道JDK中有任何这样的工具。以下是如何实现它:
import store from './components/vuex/store.js'
import App from './components/App.vue';
const UserPage = r => require.ensure([], () => r(require('./components/views/UserPage.vue')), 'group-ip')
const UserSettings = resolve => require(['./components/views/UserSettings.vue'], resolve) // r => require.ensure([], () => r(require('./components/views/PlayerSettings.vue')), 'group-settings')
const Hub = resolve => require(['./components/views/Hub/Hub.vue'], resolve)
const routes = [
{ path: '/', component: UserPage },
{ path: '/settings', component: UserSettings },
{ path: '/user/:id', component: Hub },
{ path: '*', redirect: '/' }
]
const router = new VueRouter({
mode: 'history',
routes
})
const app = new Vue({
router,
store,
render: h => h(App)
}).$mount('#app');