2015-07-25 2 views
-3

У меня есть ArrayListСортировка ArrayList по длине жала в Java

ArrayList<String[]> matches = new ArrayList<String[]>(); 

Collections.sort(matches, new Comparator<String>() { 
    @Override 
    public int compare(String word1, String word2) { 
     return word2.length() - word1.length(); 
     } 
    }); 

Я хочу разобраться в этом ArrayList по длине строки в ArrayList. Я хочу, чтобы список был в порядке убывания.

Input = ace, a, apple, cord 

Output = apple, cord, ace, a 
+1

'ace, a, apple, cord' является просто' ArrayList ', ** NOT **' ArrayList '. –

+1

Пожалуйста, объясните шаги, которые вы предприняли до сих пор, чтобы решить эту проблему. – dasblinkenlight

+1

Где моя попытка решить эту проблему? – Zarwan

ответ

0
  1. Вы, вероятно, имел в виду List<String>, не List<String[]> как вход.

  2. Чтобы отсортировать список вам нужно использовать java.util.Collections.sort метод с пользовательским компаратор, который сравнивает элементы по длине:

    List<String> list = Arrays.asList(
         "ace", "a", "apple", "cord" 
    ); 
    
    Collections.sort(list, new Comparator<String>() { 
        @Override 
        public int compare(String o1, String o2) { 
         return o2.length() - o1.length(); 
        } 
    }); 
    
    System.out.println(list); 
    
0

вам нужно реализовать компаратор, как это:

class stringLengthComparator implements Comparator<String> { 
    public int compare(String o1, String o2) { 
     if (o1.length() > o2.length()) { 
      return 1; 
     } else if (o1.length() < o2.length()) { 
      return -1; 
     } else { 
      return 0; 
     } 
    } 
} 

, а затем вы просто сортировать ваш ArrayList так:

Collections.sort(matches, new stringLengthComparator()); 
+0

'Collections.sort', а не' Arrays.sort' – Aivean

+0

pardon your right – tagtraeumer

0

Это точно, как вы собираетесь сделать вашу программу, используя ArrayList , Обязательно импортируйте соответствующие классы java.util.

public static void main(String args[]) 
{ 
    String matches[] = {"ace", "a", "apple", "cord"}; 
    List<String> list = new ArrayList<String>(); 
    Collections.addAll(list, matches); 
    Collections.sort(list, new Comparator<String>(){ 
     public int compare(String o1, String o2) 
     { 
      return o1.length() - o2.length(); 
     } 
    }); 

    Collections.reverse(list); 
    System.out.println(list); 
} 

Input: "ace", "a", "apple", "cord" 
Output: [apple, cord, ace, a] 

P.S. Это было протестировано, и оно работает именно так, как вы хотите.

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