Java ArrayList重复删除
这是我的密码:Java ArrayList重复删除,java,Java,这是我的密码: public static void deleteDuplicates(ArrayList<String> list){ ArrayList<String> newList = new ArrayList<String>(); HashSet<String> set = new HashSet<String>(); for(int i = 0; i < list.size(); i++){
public static void deleteDuplicates(ArrayList<String> list){
ArrayList<String> newList = new ArrayList<String>();
HashSet<String> set = new HashSet<String>();
for(int i = 0; i < list.size(); i++){
set.add(list.get(i));
}
newList.addAll(set);
return newList;
}
我得到的结果是:
3, 2, 4, 1, 5
有人能解释一下为什么这不正常吗?更改
HashSet
:
哈希表和链表的集合接口实现,具有可预测的迭代顺序
此外,请记住:
公共静态无效删除重复项(列表){
List newList=newarraylist();
Set Set=newlinkedhashset();
//代码的其余部分
}
更改哈希集
:
哈希表和链表的集合接口实现,具有可预测的迭代顺序
此外,请记住:
公共静态无效删除重复项(列表){
List newList=newarraylist();
Set Set=newlinkedhashset();
//代码的其余部分
}
引用HashSet类文档:
它不保证集合的迭代顺序;在里面
特别是,它不能保证订单保持不变
随着时间的推移
引用HashSet类文档: 它不保证集合的迭代顺序;在里面 特别是,它不能保证订单保持不变 随着时间的推移
我相信有一种更有效的方法,但这里有一个n^2算法的想法
public static void deleteDuplicates(ArrayList<String> list){
ArrayList<String> newList = new ArrayList<String>();
for (int i = 0; i < list.size(); i++){
boolean exists = false;
String str = list.get(i);
for (int j = 0; j < newList.size(); j++){
if (newList.get(j).compareTo(str)==0){
exists = true;
break;
}
}
if (!exists) newList.add(str);
}
return newList;
}
公共静态void deleteDuplicates(ArrayList列表){
ArrayList newList=新的ArrayList();
对于(int i=0;i
我相信有一种更有效的方法,但这里有一个n^2算法的想法
public static void deleteDuplicates(ArrayList<String> list){
ArrayList<String> newList = new ArrayList<String>();
for (int i = 0; i < list.size(); i++){
boolean exists = false;
String str = list.get(i);
for (int j = 0; j < newList.size(); j++){
if (newList.get(j).compareTo(str)==0){
exists = true;
break;
}
}
if (!exists) newList.add(str);
}
return newList;
}
公共静态void deleteDuplicates(ArrayList列表){
ArrayList newList=新的ArrayList();
对于(int i=0;i
设置数据结构不维护顺序。但是如果你想排序,那么你可以使用树集。@Shivamkara你的意思是HashSet
,因为确实如此。@LuiggiMendoza不,我是指任何数据结构集。链接Hashset在内部保留一个链接列表以保持秩序。啊,我想出来了。谢谢,我不知道hashset。LinkedHashSet维护元素插入的顺序。树集合根据元素的自然顺序对元素进行排序。集合数据结构不保持顺序。但是如果你想排序,那么你可以使用树集。@Shivamkara你的意思是HashSet
,因为确实如此。@LuiggiMendoza不,我是指任何数据结构集。链接Hashset在内部保留一个链接列表以保持秩序。啊,我想出来了。谢谢,我不知道hashset。LinkedHashSet维护元素插入的顺序。TreeSet根据元素的自然顺序对元素进行排序。@user1327636别忘了编程面向接口,而不是类实现(检查我答案中提供的链接)。@user1327636别忘了编程面向接口,而不是类实现(检查我答案中提供的链接)。
public static void deleteDuplicates(ArrayList<String> list){
ArrayList<String> newList = new ArrayList<String>();
for (int i = 0; i < list.size(); i++){
boolean exists = false;
String str = list.get(i);
for (int j = 0; j < newList.size(); j++){
if (newList.get(j).compareTo(str)==0){
exists = true;
break;
}
}
if (!exists) newList.add(str);
}
return newList;
}