您的位置:首页 > 其它

List集合去重复

2016-06-16 14:42 211 查看
集合去重的几种方式:

第一种:

public <T> List<T> getRepeatContains(List<T> ts) {
// 存放不可重复的值,HashSet中是不允许存放重复的值的
HashSet<T> set = new HashSet<T>();
// 最终要返回的去重后的数据集合
List<T> repeatElements = new ArrayList<T>();
// 迭代遍历出原始的集合数据进行比对
Iterator<T> iterator = ts.iterator();
while (iterator.hasNext()) {
T t = iterator.next();
// 比对如果没有的话就添加进入
if (!set.contains(t)) {
set.add(t);
}
}
// 循环结束将数据添加到集合中
repeatElements.addAll(set);
// 返回结果
return repeatElements;
}

第二种:

HashSet<string> hs = new HashSet<string>(li1); //此时已经去掉重复的数据保存在hashset中


第三种:

for (int i = 0; i < li2.Count; i++)  //外循环是循环的次数
{
for (int j = li2.Count - 1 ; j > i; j--)  //内循环是 外循环一次比较的次数
{

if (li2[i] == li2[j])
{
li2.RemoveAt(j);
}

}
}


第四种:

//把相同的用null代替。
for (int i = 0; i < li3.Count; i++)
{
for (int j = 0; j < li3.Count; j++)
{
if (i == j) continue;

if (li3[i] == li3[j])
{
li3[j] = "null";
}

}
}


第五种:

//这方法跟上面的一样,只是变了逻辑
for (int i = 0; i < li4.Count - 1; i++)
{
for (int j = 0; j < li4.Count ; j++)
{
if (i != j)
{
if (li4[i] == li4[j])
{
li4[j] = "null";
}
}
}
}


有些方法针对某些情况可能不好用,但是看懂思路改一改每一个方法都是可以用,希望能够帮助到大家
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: