Я пытаюсь написать общий метод mergesort, который будет работать как для массивов, так и для arraylists, но я не уверен, возможно ли это, учитывая, что две структуры имеют разные методы/синтаксис добавления/извлечения элементов.Общий метод, который может принимать как массивы, так и arraylists
ответ
Я бы просто написал метод, чтобы взять список, а затем написать второй метод, который принимает массив, который делегирует первый метод. Если вы используете Arrays.asList, любые изменения, внесенные в список, должны быть записаны в исходный массив.
public <T> void mergeSort(T array []) {
mergeSort(Arrays.asList(array));
}
public <T> void mergeSort(List<T> list) {
// do sort here
}
Но мое задание - написать один метод – manis
Нет никакого реального значения для создания единственного метода. В коде выше код CODE не дублируется, что является важной частью. –
Вы не можете написать один конкретный метод, который сортирует как эти точно так же, но вы можете написать один метод, который перегружает и делегатов на другой:
public void mergeSort(List<Integer> list) {
Integer[] arr = list.toArray(new Integer[list.size()]);
mergeSort(arr);
list.clear();
for(int num : arr) {
list.add(num);
}
}
public void mergeSort(Integer[] arr) {
//Actual sorting logic
}
Вы не можете сделать это одним способом, если вы не скажете ему принять Object
и начать бросать исключения, если это неправильный тип, который, очевидно, не является практикой на практике!
@ ZouZou Doh, извините. Исправлена. – berry120
Я также не думаю, что это сработает, потому что изменения в массиве не будут записаны в список поддержки. Когда вы вызываете list.toArray, вы получаете мелкую копию. –
@mattforsythe Извините, еще один момент замораживания мозга ... исправлено. – berry120
- 1. Метод, который принимает как float [], так и double [] массивы
- 2. Метод, который принимает два ArrayLists как параметры
- 3. Пользовательский метод Java, который может принимать цель как параметр
- 4. Я пытаюсь создать массивList, который может принимать как целые числа, так и массив
- 5. Как определить метод, который может принимать разные последовательности аргументов?
- 6. Как определить метод, который может принимать произвольные аргументы в java?
- 7. Как написать макрос, который может принимать параметр?
- 8. используя массивы вместо arrayLists
- 9. Общий метод для JTextFields принимать только числа
- 10. Как может поток, который спит принимать события?
- 11. Почему «self» в Objective-C может принимать как «метод класса», так и «метод экземпляра»?
- 12. Общий метод Java 5, который может принимать либо класс, либо коллекцию?
- 13. Общий метод, который принимает два типа списка
- 14. Общий метод, который инвертирует булевы
- 15. Создайте метод или список, который не может принимать пустые аргументы
- 16. Сохранение объекта, который содержит arraylists в arraylists
- 17. Как создать метод, который принимает как String [], так и Integer [] в java без перегрузки метода?
- 18. Java - метод в интерфейсе, который может принимать любой подкласс?
- 19. Как реализовать универсальный метод, который имеет общий тип возвращаемого значения и общий параметр?
- 20. Декоратор, который может принимать как init args, так и call args?
- 21. Возможно ли, чтобы у меня был метод, который может принимать как HashMap, так и список в качестве аргумента?
- 22. Как сделать вложенные массивы ArrayLists полезными
- 23. Как мне ввести метод, который принимает массивы?
- 24. Общий метод, который принимает класс как параметр
- 25. Как создать метод, который создает общий объект класса?
- 26. Преобразование ArrayLists в массивы (немного отличается)
- 27. Как метод java принимает аргумент, который расширяет общий тип
- 28. Метод, который суммирует двухмерные массивы Java
- 29. Как создать общий метод C#, который принимает один общий тип и возвращает другой общий тип?
- 30. Как написать метод, который может принимать DataGridView или ListView в качестве входных данных?
Перегрузка звучит подобно вашему джем. – duffymo
Невозможно это сделать без перегрузки, потому что этот вид побеждает всю цель универсальности метода. – manis
@Tarlen Это не побеждает цель вообще - наоборот, это опрятный способ ее достижения. – berry120