2012-05-25 16 views
5
import java.util.Scanner; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Collection; 

public class ClearlyAnArrayList 
{ 
    public static void main(String[] args){ 
     Scanner kb=new Scanner(System.in); 
     ArrayList<Integer>ints=new ArrayList<Integer>(); 
     int num=kb.nextInt(); 
      while(num!=-1){ 
      ints.add(num); 
      } 
    sortPrint(ints); 
} 

    public static void sortPrint(Collection<Integer>ints){ 
     Collections.sort(ints); 
     for(Integer i:ints){ 
     System.out.printf("%d\n",i); 
     } 
} 
} 

Questo è il codice che sto compilazione con bluej Quando compilo io ottenere un lungo errore che inizia "no suitable method for sort(java.util.Collection<java.lang.Integer>)" e poi va a dire di più roba che non capisconessun metodo adatto per errore sorta

La soluzione a questo era che stavo usando una lista che non è una raccolta e Collections.sort() aspetta una lista

Inoltre c'è un modo migliore di singolari import dichiarazioni a tutti i miei utils?

La soluzione data era

import java.util.*; 
+0

Vorrei rivedere questa domanda prima che la gente inizi a votarla. Indica qual è il problema e cosa hai provato a risolverlo. – Hassan

+0

Includere l'errore esatto. – Aidanc

risposta

6

Collections.sort aspetta una List e non Collection, in modo da cambiare il vostro metodo di sortPrint Da

Collection<Integer>ints 

Per

List<Integer> ints 

Offtopic:

Invece di lavorare direttamente su classi di calcestruzzo program to an interface.

Preferisco

List<Integer> ints = new ArrayList<Integer>(); 

corso

ArrayList<Integer> ints = new ArrayList<Integer>(); 
+0

Oh figo è meglio OO? –

+0

Sì, per favore leggi il link associato al programma su un'interfaccia nella mia risposta per i dettagli – mprabhat

2

che dire solo facendo questo:

public static void sortPrint(List<Integer> ints){ 
    Collections.sort(ints); 
    for(Integer i:ints){ 
    System.out.printf("%d\n",i); 
    } 

Collections.sort() è solo per List

+0

Sembra piacere grazie –

0

Per la vostra importazione

import java.util.*; 

Il metodo del genere ordinare un elenco, non un insieme, in modo da cambiare si dichiarazione:

public static void sortPrint(List<Integer> ints) 

Si può anche avere una collezione che sorta sé durante l'inserimento, il programma diventare:

public static void main(String[] args){ 
     Scanner kb=new Scanner(System.in); 
     TreeSet<Integer>ints=new TreeSet<Integer>(); 
     int num=kb.nextInt(); 
     while(num!=-1){ 
      ints.add(num); 
     } 
     //already sorted 
    } 

Attenzione, in un insieme (e quindi in un TreeSet) non si può avere lo stesso elemento due volte

0

Leggi le documentazioni (o prova a Ctrl + Spazio per informazioni).

java.until.collections documentazioni: here

Questa classe solo suppott Collections.sort(list) e Collections.sort(list,compator) , quindi non è possibile ordinare la Collection.Prova List invece

Problemi correlati