2016-10-11 2 views
1

В Java я могу написатьСортировка часть массива Scala

private final List<Point> points = ...; 
... 
Collections.sort(points.subList(start, end), sorter); 

(используется как часть алгоритма, который сортирует весь List определенным образом.)

Я хотел бы быть в состоянии выразить эквивалент в Scala с Array. Я попытался это:

val a = Array("z", "y", "x", "w", "v") 
val b = a.slice(1, 4) 
Sorting.quickSort(b) 

Но, к сожалению, она не работает, как slice копий a. Как я могу отсортировать часть массива в Scala?

Редактировать: цель состоит в том, чтобы sorter стал Scala Ordering.

ответ

4

Как Array[T] в Scala является with one to one correspondents to a Java array, вы можете использовать тот же вместо java.util.Arrays.sort:

scala> val arr = Array(1, 5, 2, 3, 7, 9) 
arr: Array[Int] = Array(1, 5, 2, 3, 7, 9) 

scala> java.util.Arrays.sort(arr, 0, 3) 

scala> arr 
res22: Array[Int] = Array(1, 2, 5, 3, 7, 9) 
+0

Я должен был сказать: я хотел использовать Scala 'Ordering' с ним ... (см' сортировщик 'выше). Это работает? – Mohan

+0

Итак, вы хотите использовать 'Ordering' в коллекции, но изменить его частично и на месте? –

+0

Да, пожалуйста, если это возможно. Если нет, я просто вернусь к использованию Java Comparator с Java ArrayList. – Mohan

Смежные вопросы