JAVA-在字符串ArrayList

时间:2018-12-12 14:12:37

标签: java string arraylist

我正在为一个学校项目工作。程序的目的是通过输入查找“相同”和“相似”字词。 我不知道如何找到相似的单词数字或只是单词。

例如:

  

输入:汽车

     

输出:发现:相似的汽车字词:3(或类似“ carhood”的字词)。

    boolean cnt = false;
    while(!cnt){
        // Variables
        ArrayList<String> WordList = 
                                new ArrayList<>(Arrays.asList("açık",...."zorunda"));
        String Word      = "";
        int WordIndex    = 0;
        int WordListSize = WordList.size();
        boolean result = false;
        System.out.print("Kelime Giriniz: ");
        String Input = new Scanner(System.in).nextLine();

        // Search Loop
        for (int i = 0; i < WordListSize; i++) {

            // Temporary variables
            Word      = WordList.get(i);
            WordIndex = WordList.indexOf(Word);

            // If there is word in word list
            if(Word.equalsIgnoreCase(Input)) {

                System.out.println("Kelime bulundu.");
                System.out.println("Kelime : "+Word);
                System.out.println("Kayıt Numarası : "+WordIndex);

                // Comparison number
                System.out.println(WordIndex+" Kelime ile karşılaştırıldı.");

                result = true;
                break;
            }
        }
        if(!result) {
            System.out.print("Kelime tarandı:");
            System.out.println((WordList.size()));
            System.out.println("Kelime bulunamadı.");
        }
        System.out.println("--");
        System.out.println("Devam etmek ister misiniz ?");
        System.out.println("'1' Evet, '0' Hayır.");
        System.out.println("--");
        int answer = new Scanner(System.in).nextInt();
        if(answer ==0){
            System.out.println("Çıkış yapaılıyor..");
            cnt= true;
        }
    }

它是土耳其语。

2 个答案:

答案 0 :(得分:2)

您可以使用java-8轻松实现:

// Assuming this is your list
List<String> myList = Arrays.asList("Carhood", "Carlight", "Tree", "Red", "Carrom");

// using a filter and then collecting 'similar words' to a list
List<String> collect = myList.stream()
                             .filter(s -> s.contains("Car"))
                             .collect(Collectors.toList());

// to print it out
collect.forEach(System.out::println);

答案 1 :(得分:0)

实际上,有很多算法可以检查字符串的相似性。 您可以使用以下链接阅读其中的许多内容,并选择喜欢的一个:https://github.com/tdebatty/java-string-similarity

还有一个maven依赖项:

<dependency>
    <groupId>info.debatty</groupId>
    <artifactId>java-string-similarity</artifactId>
    <version>RELEASE</version>
</dependency>

以及那里的一些使用示例。

简而言之,您应该设置某种similarity coefficient,并根据该算法,根据https://en.wikipedia.org/wiki/Levenshtein_distance等指标来确定字符串是否足够相似