2012-05-25 9 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); 
     } 
} 
} 

Este es el código que estoy compilando con bluej Cuando compilo me sale una larga error que comienza "no suitable method for sort(java.util.Collection<java.lang.Integer>)" y luego pasa a decir más cosas que yo no entiendoningún método adecuado para el error tipo

La solución a esto fue que yo estaba usando una lista que no es una colección y Collections.sort() espera una lista

También hay una manera mejor que import enunciados singulares para todos los mis utilidades?

La solución que se dio fue

import java.util.*; 
+0

Revisaré esta pregunta antes de que la gente comience a votar negativamente. Indique cuál es el problema y qué intentó solucionar. – Hassan

+0

Incluya el error exacto. – Aidanc

Respuesta

6

Collections.sort espera un List y no Collection, por lo que cambiar su método de sortPrint De

Collection<Integer>ints 

Para

List<Integer> ints 

Offtopic:

En lugar de trabajar directamente en las clases de hormigón program to an interface.

Prefiero

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

Durante

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

Oh genial es eso mejor OO? –

+0

Sí, lea el enlace asociado al programa a una interfaz en mi respuesta para más detalles – mprabhat

2

¿qué pasa con sólo hacer esto:

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

Collections.sort() es sólo para List

+0

Parece que me gusta eso gracias –

0

Para su importación

import java.util.*; 

El método de la clase ordenar una lista, no una colección, por lo que cambiar que la declaración de:

public static void sortPrint(List<Integer> ints) 

Usted también puede tener una colección de ese tipo en sí durante la inserción, el programa de convertido:

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 
    } 

Advertencia, en un conjunto (y por lo tanto en un TreeSet) no se puede tener el mismo elemento dos veces

0

Lea las documentaciones (o intente Ctrl + Space para obtener información).

java.until.collections documentaciones: here

Esta clase sólo suppott Collections.sort(list) y Collections.sort(list,compator) , por lo que no puede ordenar la Collection.Pruebe List en su lugar

Cuestiones relacionadas