在Dictionary程序中将对象与ArrayList进行比较

时间:2015-10-16 05:50:13

标签: java dictionary arraylist

import java.io.*;
import java.util.*;

public class Dictionary
{
protected static int line_number = 0;

public static void main(String[] args) 
{
    List<Dict> my_collection = new ArrayList<Dict>();
    List<Dict> search_term = new ArrayList<Dict>(); 
    File filename = new File("dict.txt");       

    try
    {
        Scanner data_store = new Scanner(filename);
        Scanner keyboard = new Scanner(System.in);

            while(data_store.hasNextLine())
            {
                String word = data_store.nextLine();
                Dict m = new Dict(word);
                my_collection.add(m);
                line_number++;
            }

            System.out.println(my_collection.size() + " words were loaded.");
            System.out.println("What word are you looking for?");
            String find_word = keyboard.nextLine();
            while(!(find_word.equals("no")))
            {
                Dict n = new Dict(find_word);
                for(line_number = 0; line_number < my_collection.size(); line_number++)
                {
                    if(my_collection.get(line_number).equals(n))
                    {
                        System.out.println("\"" + find_word + "\" is at index " + line_number);
                    }
                }
                System.out.println("Search again?");
                find_word = keyboard.nextLine();
            }
    }

    catch(FileNotFoundException e)
    {
        System.out.println("Nope!");
    }
}
}

我试图通过一个名为dict.txt的Dictionary.txt文件,将它放在一个ArrayList中(这似乎工作)并允许输入将在ArrayList中输出该单词的位置。我试图通过将user_input转换为ArrayList所包含的对象来实现这一点,但我无法比较这两者,以便我可以在ArrayList中输出正确的对象实例。请帮忙!

2 个答案:

答案 0 :(得分:1)

什么是Dict ...如果它是你的自定义类,那么让这个类实现Comparable Interface。

class Dict implements Comparable<Dict>
{
 @Override
 public int compareTo(Dict other)
 {
  //here you can call "compareTo on Strings or equals on String
 }
}


使用Comparable接口具有优势,因为现在我们可以在Dict上调用各种Arrays实用程序类方法。

或者作为一种更简单的方法,只需在Dict类中覆盖equals方法。但是,您还需要覆盖hashCode方法,因此hashCodeequals之间的合同始终保持不变。

答案 1 :(得分:0)

上述程序中的问题是你正在比较dict类的对象。但实际上你必须比较存储在dict对象中的字符串。

例如,如果dict类使用名为'inp'的String变量,则使用以下代码。 如果(my_collection.get(LINE_NUMBER).inp.contains(n.inp)) ....

否则实现类似的接口并覆盖dict类中的compareTo方法。