0

一連の名を読み込み、それらをセットに格納することで重複を排除するプログラムを作成します。ユーザーが名を検索できるようにします。

(私を信じてください、私はJavaクラスを受講していません。したがって、宿題ではありません)。

私の問題はこれを実装することです:ユーザーが名を検索できるようにします。

検索機能だけで、他のすべてが機能します。

これまでの私のコード...

package com.Sets;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class DuplicateElimination {

    public static void main(String[] args) {

        // Write a program thats ask for first names and store it in an array.

        String fName;

        Scanner input = new Scanner(System.in);
        String[] names = new String[10];

        for (int i = 0; i < names.length; i++) {
            System.out.println("Enter First Name: ");
            names[i] = input.nextLine();
        }
        // Printout that array as a list.
        List<String> list = Arrays.asList(names);

        // Initial Array Elements
        System.out.printf("%s ", list);
        System.out.println();

        // Calling removeDuplicates method
        removeDuplicates(list);

    }

    // Make a method called removeDuplicates.
    private static void removeDuplicates(Collection<String> values) {

        // Implement a Hashset in it.
        Set<String> set = new HashSet<String>(values);

        // Printout a non-duplicate list of elements.
        for (String value : set) {
            System.out.printf("%s ", value);
        }

        System.out.println();

    }

    // Make a method to search for a first name.
    public static void searchForName(Collection<String> names) {

        String someName;

        Set<String> set = new HashSet<String>(names);
        Scanner input = new Scanner(System.in);


        for (int i = 0; i <= 10; i++) {
            System.out.println("Search this name: ");
            someName = input.nextLine();
        }

        if (someName ) {

        } else {

        }
    }

}

searchForNameメソッドに自信がありません...誰かがこれを機能させる方法についてアイデアを与えることができますか?

4

4 に答える 4

1

removeDuplicatesを返すことを検討してくださいSet。に渡しSetますsearchForName。次に、を使用しますSet.contains

Set.contains

于 2012-11-07T22:33:22.780 に答える
1
public static boolean searchForName(Collection<String> names, String someName) 
{
    Set<String> set = new HashSet<String>(names);
    return set.contains(someName);
}
于 2012-11-07T22:33:49.847 に答える
1

メソッドを使用set.contains()して、セットに入力文字列が含まれているかどうかを確認します。

   for (int i = 0; i <= 10; i++) {
            System.out.println("Search this name: ");
            someName = input.nextLine();
        }

if(set.contains(someName)) {
System.out.println("set contains name");

}
else {
System.out.println("set doesnt contain this name");
}
于 2012-11-07T22:34:37.983 に答える
1

A TreeSetを使用してから、 tailSetheadSet を使用して、検索キーの「以上」および「以下」のすべての要素をアルファベット順に検索できます。

final TreeSet<String> p = new TreeSet<String>();

        p.addAll(Arrays.asList(new String[] { "aaaaaa", "bbbbbbb", "cccccc", "dddddd", "eeeeeee", "fffff" }));

        System.out.println(p.headSet("dd", true));
        System.out.println(p.tailSet("dd", true));

結果:

[aaaaaa, bbbbbbb, cccccc]
[dddddd, eeeeeee, fffff]

tailSetの最初の要素は、検索キー( "dd")で始まるキーです。キャッチがあります-名前「dddddd」が見つからなかった場合、tailSetは次を返します。

[eeeeeee, fffff]

したがって、最初の要素がstartsWith( "dd")であるかどうかを常に確認する必要があります。それ以外の場合はnotFoundです。

于 2012-11-07T22:38:25.540 に答える