1

ありがとうマルコ。コードを書き直します。シンプルにするようにしてください。今回は実際にコンパイルできます。ただし、隣り合っている重複アイテムのみを削除できます。たとえば、1 2 3 3 4 4 5 1 を入力すると、出力は 1 2 3 4 5 1 になります。最後に重複を取得できません。(ところで:このウェブサイトは初めてです。表示が乱れている場合は申し訳ありません)

新しいコードは次のとおりです。

import java.util.*;

public class SetListDemo{
public static void main(String[] args){
    SetListType newList = new SetListType();
    Scanner keyboard = new Scanner(System.in);

    System.out.println( "Enter a series of items: ");
        String input = keyboard.nextLine();

    String[] original = input.split(" ");
    for (String s : original)
    newList.insert(s);

    List<String> finalList = new ArrayList(Arrays.asList(original)) ;

    Iterator<String> setIterator = finalList.iterator();  

    String position = null;

    while(setIterator.hasNext()){
        String secondItem = setIterator.next();

        if(secondItem.equals(position)){
            setIterator.remove();
        }   

        position = secondItem;
    }

    System.out.println("\nHere is the set list:");
    displayList(finalList);
    System.out.println("\n");
}

public static void displayList(List list){
    for(int index = 0; index <list.size(); index++)
    System.out.print(list.get(index) + ", ");
}

}
4

4 に答える 4

6

「javaarraylistの重複を削除する」という質問に答えるには:

すべての要素をに入れるだけSetで完了です。

-また-

originalリストを繰り返して要素をに追加しますListが、追加する前にList#contains()、要素がすでに存在するかどうかを確認してください。

編集:これを試してください:

String[] original = input.split(" ");
List<String> finalList = new ArrayList<String>();

for (String s : original) {
    if (!finalList.contains(s)) {
        finalList.add(s);
    }
}

System.out.println("\nHere is the set list:");
displayList(finalList);
System.out.println("\n");
于 2012-08-30T12:32:27.077 に答える
3

SetListIteratorコードによって間接的に参照されるクラスですが、クラスパスにはありません。プロジェクトをセットアップするときに、ソース ファイルを に加えてコピーするのを忘れたSetListTypeか、IDE の外部でこれをコンパイルしていて、単にそのクラスのコンパイルに失敗した可能性があります。

于 2012-08-30T12:26:54.627 に答える
1

あなたが言っていることから、割り当てを実行すると、クラスパスが正しく設定されていないため、SetListTypeのコンパイル済みクラスファイルが含まれるように聞こえます。-classpathメインメソッドを実行するときに、これと割り当てが依存する他のクラスを指すようにオプションを設定することで、これを修正できるはずです。

于 2012-08-30T12:30:09.380 に答える
0

VectorまたはListArrayを使用して、要素を追加する前に、その要素が新しいリストに存在するかどうかを確認できます。

ほんの一例:

    Vector<String> list = new Vector<String>();
    System.out.println("list:");
    for(int i=0; i<100; i++){
        list.add("" + new Random().nextInt(10));
        System.out.println(list.lastElement());
    }

    System.out.println("newList:");
    java.util.Iterator<String> it = list.iterator();
    Vector<String> newList = new Vector<String>();
    while(it.hasNext()){
        String s = it.next();
        if(!newList.contains(s)){
            newList.add(s);
        }
    }

    for(String s : newList){
        System.out.println(s);
    }

2番目の部分の場合:

    int[] count = new int[newList.size()];      
    for(String s : list){
        int index = newList.indexOf(s);
        count[index]++;
    }

    for(String s : newList){
        System.out.println(s + " appears " + count[newList.indexOf(s)] + " times");
    }
于 2012-08-30T12:38:31.207 に答える