0

これはコードです:

ArrayList<String> listSell = new ArrayList<String>();

listSell.add("hello : world : one");
listSell.add("hello : world : one");
listSell.add("hello : world : one");

String splitSell[] = null;

for (int i = 0; i < listSell.size(); i++){
    splitSell = (listSell.get(i)).split(":");
    System.out.println(splitSell[0]);
}

splitSell[0] を使用すると、すべての値が出力されます。

hello 
hello 
hello 

値を 1 つだけ出力するにはどうすればよいですか?

4

2 に答える 2

1

つまり、分割後に重複する要素を削除する必要があります。分割された要素を Set 実装クラスに追加し、それを反復処理します。

 Set<String> set = new LinkedHashSet<>();
for (int i = 0; i < listSell.size(); i++){
    splitSell = (listSell.get(i)).split(":");
    set.add(splitSell[0]);
}

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

クラスを実装するjava.util.Setは重複する要素を受け入れないため、この例では「hello」を1回だけ出力します。

于 2012-11-08T15:28:30.260 に答える
0

あなたが何を望んでいるのか正確にはわかりません。しかし、ここにいくつかのオプションがあります。

ArrayList<String> listSell = new ArrayList<String>();

listSell.add("hello : world : one");
listSell.add("hello : world : one");
listSell.add("hello : world : one");

String splitSell[] = null;
Set<String> split1 = new TreeSet<String>();
Set<String> split2 = new TreeSet<String>();
Set<String> split3 = new TreeSet<String>();

for (String listItem : listSell) {
    splitSell = listItem .split(":");
    split1.add(splitSell[0]);
    split2.add(splitSell[1]);
    split3.add(splitSell[2]);
}

//Prints all the first values
for (String string1 : split1) {
    System.out.println(string1);
}

//Prints all the second values
for (String string2 : split2) {
    System.out.println(string2);
}

//Prints all the third values
for (String string3 : split3) {
    System.out.println(string3);
}

このaddメソッドは、要素がまだ にない場合にのみ要素を追加することに注意してくださいSetセットのドキュメントを参照してください。

于 2012-11-08T17:04:53.593 に答える