关于list去重的问题,请求帮助,谢谢啦!

情况是这样的。

有一个list对象,list里面存储的是int[]型一维数组data,data就两个元素。

比如说:
data[0]={0,1},data[1]={0,1},data[2]={1,0},
data[3]={3,1},data[4]={3,2},data[5]={2,3}

当然还有其他元素

现在要把这个list去除重复的数组,而且,{0,1}和{1,0}这种情况判定为相同

用了很多方法,都没有去掉,纠结啊 :(

[code="java"] for(int i=0;i<list.size();i++){

if(list.lastIndexOf(list.get(i))!=i){

list.remove(i);

i--;
}

}

//漏了一点
[/code]

试这用用set吧

增加data[index] 这个数组的索引号0和1位进行互换进行比较

用Set的话,可以把现在的list中放的数据改用一个自定义类型,并重写hashCode方法。
如果保留List的话,就要自己遍历List来剔除你认为重复的元素。

既然只了只有2个属性,那么使用一个类去代替int[] 并重写equals方法

[code="java"]import java.util.ArrayList;
import java.util.List;

public class Test {
public static void main(String[] args) throws Exception {
List list = new ArrayList();
list.add(new Data(1,2));
list.add(new Data(2,1));
for(int i=0;i<list.size();i++){
if(list.lastIndexOf(list.get(i))!=i){
list.remove(i);
}
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getA()+","+list.get(i).getB());
}
}
}
class Data{
private int a;
private int b;
Data(int a,int b){
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
@Override
public boolean equals(Object obj) {
Data d = (Data)obj;
if((d.getA()==this.getA()&&d.getB()==this.getB())||(d.getA()==this.getB()&&d.getB()==this.getA())){
return true;
}
return false;
}

}[/code]

我写的这个方法 效率不高, 再数量比较大的时候用 myali88 说的 重写hashCode()方法会快很多