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);
}
}
}
这是我用blueJ编译的代码。当我编译它时,我得到了一个 从“
no suitable method for sort(java.util.Collection<java.lang.Integer>)
”开始然后继续的冗长错误 说更多我不理解的东西。
对此的解决方案是我使用的List不是集合而Collections.sort()
需要List
对于所有人来说,还有比单数
import
语句更好的方法 我的工具?
给出的解决方案是
import java.util.*;
答案 0 :(得分:6)
Collections.sort
需要List
而不是Collection
,因此请更改sortPrint
方法
来自
Collection<Integer>ints
要
List<Integer> ints
Offtopic:
而不是直接处理具体类program to an interface。
体型
List<Integer> ints = new ArrayList<Integer>();
在
ArrayList<Integer> ints = new ArrayList<Integer>();
答案 1 :(得分:2)
这样做:
public static void sortPrint(List<Integer> ints){
Collections.sort(ints);
for(Integer i:ints){
System.out.printf("%d\n",i);
}
Collections.sort()
仅适用于List
答案 2 :(得分:0)
供您导入
import java.util.*;
sort方法对List进行排序,而不是集合,因此请将声明更改为:
public static void sortPrint(List<Integer> ints)
您还可以拥有一个在插入过程中自行排序的集合,您的程序将成为:
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
}
警告,在Set(以及TreeSet中)中,您不能拥有相同的元素两次
答案 3 :(得分:0)
阅读文档(或尝试按Ctrl + Space获取信息)。
java.until.Collections
文档:here
此课程仅支持Collections.sort(list)
和Collections.sort(list,comparator)
,因此您无法对Collection
进行排序。请尝试使用List