2017-01-23 2 views
-1

Я делаю свой собственный anythink, который реализует интерфейс Comparable. Алгоритм выглядит отлично, но Comparable a = list.get(i); - ссылка, как я предполагаю, но мне нужна копия этого объекта. Я не могу использовать list.get(i).copy(), потому что он не определен для Comparable.Как скопировать объект в Java

private static void sortIncrease(ArrayList<Comparable> list) { 
    int i, j; 

    for (i = 1; i < list.size(); i++) { 
     Comparable a = list.get(i); 

     for (j = i - 1 ; j >= 0 ; j = j - 1) { 
      int cmpResult = a.compareTo(list.get(j)); 

      if (cmpResult < 0) { 
       list.set(j + 1, list.get(j)); 
      } else { 
       list.set(j+1, a); 
       break; 
      } 
     } 
    }  
} 
+5

Зачем вам нужна копия объекта? Если это алгоритм сортировки, в этом нет необходимости. – Kayaman

+0

Правильно, вы обычно не копируете объект, вы копируете ссылку. Также обычно сравнивается 'Comparable'. Например. 'Сопоставимый '. Не используйте необработанные типы. – markspace

+0

Я не могу параметризовать его, потому что я действительно не знаю, что это такое. Это может быть строка, или int, или smth else. @markspace –

ответ

-1

Я могу предложить вам «плохой способ» сделать это, создать свой собственный метод клонирования. Вы можете:

-Take в качестве входных параметров другой Сопоставимые и клонировать их в объект

-Создание метода, которые обеспечивают ваши параметры и вставить его в конструктор позже.

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