从文件中排序ArrayList

时间:2014-05-03 17:13:38

标签: java arraylist

我有一个包含颜色列表的文件。他们的十六进制值(海军#000080)。我能够将文件内容读入arrayList,但是,我试图根据十六进制值对此列表进行排序。因此我创建了另外两个类,一个包含用于比较十六进制值的方法,另一个包含一个名为Color的类,它表示我在列表中存储的信息类型。我的问题是,当我尝试将文件内容添加到List时,如下所示: -

colorNames.add(inputFileName.nextLine());

我收到错误消息“类型List中的方法add(Color)不适用于参数(String)”

这是因为我按如下方式创建了我的列表: -

List<Color> colorNames = new ArrayList<Color>();

我理解错误意味着什么,但我不知道如何解决它,或者我采取的方法是否合适!任何建议,将不胜感激。以下是我的来源。

//import statements

public class ReadStoreShow {

public static void main(String[] args) {

    System.out.println("Please input a filename: ");
    Scanner inputFile = new Scanner(System.in);
    String fileName = inputFile.nextLine();
    File colors = new File(fileName.toString());

    //Receive number N from user
    System.out.println("Please input a number N: ");
    Scanner inputNumber = new Scanner(System.in);
    int number = inputNumber.nextInt();

    List<Color> colorNames = new ArrayList<Color>();

    try {
        Scanner inputFileName = new Scanner(colors);
        while (inputFileName.hasNext()) {
            colorNames.add(inputFileName.nextLine());
        }
        List<Color> subListOfColors = colorNames.subList(0, number);
        Collections.sort(subListOfColors, new ColorComp());
        for (int i = 0; i<subListOfColors.size(); i++)
            System.out.println(subListOfColors.get(i));
        inputFileName.close();

    } 

    catch (FileNotFoundException e) {
        System.out.println("File not found");
        System.out.println("Please ensure that file name is <<name>>.txt");

    }

}

}
class ColorComp implements Comparator<Color>{
    @Override
    public int compare(Color c1, Color c2){
        String string1 = c1.toString();
        String string2 = c2.toString();
        int compareResult = string1.compareTo(string2);
        if(compareResult < 0) {return 1;}
        else {return -1;}
    }
}
class Color {
    private String colorName;
    private String colorHex;

    public Color(String n, String h) {
        this.colorName = n;
        this.colorHex = h;
    }
    public String getColorHex() {return colorHex;}
    public String getColorName() {return colorName;}
    public String toString() {return "Color Name: " + this.colorName + "Color Hex: " + this.colorHex;}
}

1 个答案:

答案 0 :(得分:1)

我认为首先你从文件读取数据并存储到Color类对象中,之后你将该对象添加到数组中。