0

私はArrayList整数型(get_unique)で、一意の値のみを挿入する必要があります。どうすればいいですか?

javascriptで同じことをするというアイデアはありますが、Javaでそれを行う方法がわかりませんか?

 <%
ArrayList<Integer> get_unique = new ArrayList<Integer>();
ArrayList<Integer> set_unique = new ArrayList<Integer>();
// how do it 
%>

<script language="JavaScript">
<!--
// note: you will need to populate the myList() array with values!
var myList = new Array(); 
var uniqueList = new Array();
var uniqueListIndex = 0;

for (i=0;i<myList.length;i++) {
    var temp = myList[i];
    var unique = true;
    for (j=0;j<uniqueList.length;j++) {
        if (temp == uniqueList[j]) {
            unique = false;
            break;
        }
    }

    if (unique == true) {
        uniqueList[uniqueListIndex] = temp;
        uniqueListIndex++;
    } 
}
</script>
4

7 に答える 7

3

Set<Integer>代わりに使用してください。

Set<Integer> unique = new LinkedHashSet<Integer>();

重複するエントリは、既存のエントリと自動的にマージされます。LinkedHashSet実装を使用すると、のように挿入順序も維持されますがArrayList、実装は挿入順序を維持しないことに注意してくださいHashSet。自動マジックの種類のエントリが必要な場合は、TreeSet代わりに実装を使用してください。

参照:

于 2012-07-27T12:17:33.677 に答える
0

可能であれば、配列ではなくセットを使用してみてください-セットは各整数のコピーを1つだけ許可します。メソッドを使用して本当に必要な場合は、セットから配列を作成できますtoArray()

于 2012-07-27T12:17:05.973 に答える
0

java.util.Set<E>もっと適していると思います。一意の値のみを受け入れますhttp://docs.oracle.com/javase/7/docs/api/

于 2012-07-27T12:17:34.457 に答える
0

java.util.SetJavaでは、の代わりに使用できますjava.util.ListSet1つのオブジェクトを1回だけ保持します。

于 2012-07-27T12:18:23.340 に答える
0

Javaでリストから一意の要素を取得する最も簡単な方法は、それをセットに変換することです。

public List<Integer> getUniqueElements(List<Integer> list)
{
    //convert to a set to remove duplicates
    Set<Integer> mySet = new LinkedHashSet<>(list);

    //convert to a list and return
    return new ArrayList<Integer>(set);   
}

List<Integer> myList = new ArrayList<>();
myList.add(1);
myList.add(1);
myList.add(2);
myList.add(2);

List<Integer> get_uniq = getUniqueElements(myList);
于 2012-07-27T12:19:15.853 に答える
0

を使用しLinkedHashSetて重複を排除し、リストの順序を保持できます。

Set<Integer> uniqueSet = new LinkedHashSet<Integer>(get_unique);
List<Integer> unique_list = new ArrayList(uniqueSet);
于 2012-07-27T12:19:38.013 に答える
-1

他の人々が述べたように、JavaSetインターフェースを実装するクラスがより適しているでしょう。

ただし、ArrayListの使用が要件である場合は、メソッドを使用してArrayList<E>.Contains(Object elem)、オブジェクトがすでにArrayListに含まれているかどうかを確認できます。Object.equals(Object o)ただし、このメソッドを使用してアイテムが検索されていることに注意してください。

于 2012-07-27T12:21:51.413 に答える