2014-09-08 4 views
-2

Я пытаюсь написать код для метода, который проверяет наличие повторяющихся записей в arrayList. Проблема заключается не в самом коде, а в том, что мой профессор хочет, чтобы метод имел тип boolean, но не возвращал true или false, а только обновленный массив, который не включает дубликаты.Возврат ArrayList из метода Boolean

экс/

boolean removeDuplicates(ArrayList< String> list) { 

//code 

} 

Ввод этого ArrayList:

Agentina, Chile, Chile, Czech Republic, France, Georgia, India, India, 
Poland, Romania, Romania 

Если распечатать:

Argentina, Chile, Czech Republic, France, Georgia, India, Poland, Romania 

* уведомление "истина" или "ложь" не печатается в результате

+4

функция объявлена ​​как возвращающая 'boolean' должен возвращать значение типа' булевой '. Если вы хотите, чтобы он возвращал 'ArrayList', то это должен быть тип возврата. – Pointy

+4

Печать и возвращение - это разные вещи. – jhobbie

+0

Кроме того, чтобы добавить к тому, что говорит @Pointy, 'ArrayList' не является примитивным типом. Итак, если вы не передадите защитную копию этого метода, вы будете неявно изменять и возвращать его. – TheLostMind

ответ

0

вам нужно сделать что-то вроде:

public static void main(String args[]) throws IOException { 
     List<String> list=new ArrayList<String>(); 
     String[] arr = {"Argentina","Chile","Chile","Czech","France","Georgia","India","India","Poland","Romania","Romania"}; 
     list.addAll(Arrays.asList(arr)); 
     System.out.println("Before removing duplicates --> " + list); 
     removeDuplicates(list); 
     System.out.println("After removing duplicates --> " + list); 
    } 



static boolean removeDuplicates(List<String> list) { 

Set<String> set =new HashSet<String>(); 
set.addAll(list); 
list.clear(); 
return list.addAll(set); 

} 

напечатает:

Before removing duplicates --> [Argentina, Chile, Chile, Czech, France, Georgia, India, India, Poland, Romania, Romania] 
After removing duplicates --> [France, Argentina, Poland, Czech, Romania, Georgia, Chile, India] 
+0

Вопрос действительно читал: «Профессор хочет, чтобы метод был типа boolean». –

+0

отредактировал ответ для возврата boolean с обновленным списком – user3487063

0

На мой взгляд, это хорошая вещь, чтобы изменить методы, которые иначе были бы типа void к типу boolean, как вы можете легко отслеживать, был ли метод успешным в том, что он пытался или нет.

В этом случае я предполагаю, что ваш профессор желает вам построить метод, который удаляет дубликаты из данного списка и вернуть boolean значение true, если операция прошла успешно и false если бы не было никаких дубликатов для удаления (или приложение обнаружило некоторые ошибки по пути, например, предоставленный список был null или пустым, например).

Обратите внимание, что это довольно много спекуляций с моей стороны, так как мы не имеем полный текст задания

0
static boolean removeDuplicates(ArrayList<String> lst) { 
    boolean result = false; 

    if (lst != null && !lst.isEmpty()) { 
     /* New set is created from existing ArrayList 
      in order to remove duplicate values. 
     */ 
     Set<String> set = new HashSet<String>(lst); 

     //Modify ArrayList 
     lst.clear(); // Remove old elements from the list 
     lst.addAll(set); // Add all elements in the set to this list. 

     result = true; 
    } 

    return result; 
} 
+0

Хотя это сработает, ответ должен быть объяснен более подробно. Кроме того, просто возвращение «истина» каждый раз кажется немного бесполезным; было бы разумнее фактически вернуть что-то значимое. Например, он может возвращать 'true', если удалены дубликаты. Или если не были выброшены ошибки (например, неизменяемый список, нулевой указатель, ...). – blalasaadri

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