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

如果可能,请尝试使用Set而不是 Array - Sets 将只允许每个整数的一个副本。如果您真的需要使用该toArray()方法,您可以从 Set 创建一个数组。

于 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 中,您可以使用java.util.Set而不是java.util.List. Set只保留一个对象一次。

于 2012-07-27T12:18:23.340 回答
0

在 Java 中从List中获取唯一元素的最简单方法是将其转换为 Set:

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

您可以使用 aLinkedHashSet消除重复项并保留列表的顺序:

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

正如其他人所说,实现 Java Set 接口的类会更合适。

但是,如果需要使用 ArrayList,您可以使用这些方法ArrayList<E>.Contains(Object elem)来验证对象是否已包含在您的 ArrayList 中。但请注意,使用该方法正在搜索项目Object.equals(Object o)

于 2012-07-27T12:21:51.413 回答