从java对象数组数据中删除重复项
我想知道如何删除对象中的重复项 比如说从java对象数组数据中删除重复项,java,arrays,object,Java,Arrays,Object,我想知道如何删除对象中的重复项 比如说 cat c[] = new cat[10]; c[1].data = "ji"; c[2].data = "pi"; c[3].data = "ji"; c[4].data = "lp"; c[5].data = "ji"; c[6].data = "pi"; c[7].data = "jis"; c[8].data = "lp"; c[9].data = "js"; c[10].data = "psi"; 我想从对象数组中删除duplicate
cat c[] = new cat[10];
c[1].data = "ji";
c[2].data = "pi";
c[3].data = "ji";
c[4].data = "lp";
c[5].data = "ji";
c[6].data = "pi";
c[7].data = "jis";
c[8].data = "lp";
c[9].data = "js";
c[10].data = "psi";
我想从对象数组中删除duplicates值
感谢并前进您可以创建另一个临时数组,在原始数组中循环,并检查每个元素的值是否已在临时数组中。如果没有,请添加它
您还可以使用并重写equals和hashCode方法您可以创建另一个临时数组,在原始数组中循环,并检查每个元素的值是否已在临时数组中。如果没有,请添加它
您还可以使用并重写equals和hashCode方法我假设您要创建另一个无重复的数组。(因为无法更改数组的大小) 您可以实现hashCode和equals并使用HashSet,但是如果没有它们,您可以创建一个比较器 然而,最简单的方法可能是使用“Cat”类和“cats”数组
Cat[]cats={…};
Set data=new HashSet();
List catList=new ArrayList();
对于(Cat:Cat)如果(数据添加(Cat.data))catList.add(Cat);
Cat[]unqiueCats=catList.toArray(新的Cat[catList.size()]);
我假设您想创建另一个无重复的数组。(因为无法更改数组的大小)
您可以实现hashCode和equals并使用HashSet,但是如果没有它们,您可以创建一个比较器
然而,最简单的方法可能是使用“Cat”类和“cats”数组
Cat[]cats={…};
Set data=new HashSet();
List catList=new ArrayList();
对于(Cat:Cat)如果(数据添加(Cat.data))catList.add(Cat);
Cat[]unqiueCats=catList.toArray(新的Cat[catList.size()]);
这里有一个快速的破解方法,可以实现您想要的功能(希望还可以编译):
//假设问题中的代码在这里。
java.util.List tmp=new java.util.LinkedList();
java.util.HashSet=new HashSet();
对于(int i=0;i
这里有一个快速的破解方法,可以实现您想要的功能(希望还可以编译):
//假设问题中的代码在这里。
java.util.List tmp=new java.util.LinkedList();
java.util.HashSet=new HashSet();
对于(int i=0;i
像这样的东西应该有用吗?确保导入java.util.array和java.util.HashSet
/**
* Removes duplicates from an array. Objects in the array must properly
* implement hashCode() and equals() for this to work correctly.
*/
public static <E> E[] removeDuplicates(E[] array) {
// convert input array to populated list
List<E> list=Arrays.asList(array);
// convert list to populated set
HashSet<E> set=new HashSet<E>();
set.addAll(list);
// convert set to array & return,
// use cast because you can't create generic arrays
return (E[]) set.toArray();
}
/**
*从数组中删除重复项。数组中的对象必须正确
*实现hashCode()和equals(),使其正常工作。
*/
公共静态E[]移除副本(E[]数组){
//将输入数组转换为填充列表
列表=数组。asList(数组);
//将列表转换为填充集
HashSet=newhashset();
set.addAll(列表);
//将集合转换为数组并返回,
//使用强制转换,因为无法创建泛型数组
return(E[])set.toArray();
}
像这样的东西应该有用吗?确保导入java.util.array和java.util.HashSet
/**
* Removes duplicates from an array. Objects in the array must properly
* implement hashCode() and equals() for this to work correctly.
*/
public static <E> E[] removeDuplicates(E[] array) {
// convert input array to populated list
List<E> list=Arrays.asList(array);
// convert list to populated set
HashSet<E> set=new HashSet<E>();
set.addAll(list);
// convert set to array & return,
// use cast because you can't create generic arrays
return (E[]) set.toArray();
}
/**
*从数组中删除重复项。数组中的对象必须正确
*实现hashCode()和equals(),使其正常工作。
*/
公共静态E[]移除副本(E[]数组){
//将输入数组转换为填充列表
列表=数组。asList(数组);
//将列表转换为填充集
HashSet=newhashset();
set.addAll(列表);
//将集合转换为数组并返回,
//使用强制转换,因为无法创建泛型数组
return(E[])set.toArray();
}
由于某种原因,注释系统从我的答案中删除了所有泛型。对于代码片段,在中缩进4个空格。编辑器有一个按钮,只需突出显示您的代码并单击即可。出于某种原因,注释系统从我的答案中删除了所有泛型。对于代码片段,在中缩进4个空格。编辑器有一个按钮,只需突出显示您的代码并单击即可。只需使用Set
(特别是HashSet
),并实现Comparable
或提供比较器即可。不,它不应实现Comparable。对于Set和Map,您必须重写equals和hashCode方法,只需使用Set
(特别是HashSet
),并实现Comparable
或提供比较器。不,它不应实现Comparable。对于Set和Map,必须重写equals和hashCode方法注意,在Java中,数组索引是基于0的,即在上面的数组中,c[0]保持为空,对c[10]的引用会导致ArrayIndexOutOfBoundsException
。索引应该是0..9。请注意,在Java中,数组索引是基于0的,即在上面的数组中,c[0]保留为空,对c[10]的引用会导致ArrayIndexOutOfBoundsException
。索引应该是0..9。这是一种很好的、聪明的方法,可以在没有任何循环的情况下(在代码中)实现这一点。当然,addAll()
方法将为您完成所有这些工作,而且可能会更有效,因为它可以与HashSet的内部实现一起工作。这是一种很好的、聪明的方法,可以在没有任何循环的情况下(在您的代码中)完成这项工作。当然,addAll()
方法将为您完成所有这些,而且可能会更有效,因为它可以与HashSet的内部实现一起工作。
/**
* Removes duplicates from an array. Objects in the array must properly
* implement hashCode() and equals() for this to work correctly.
*/
public static <E> E[] removeDuplicates(E[] array) {
// convert input array to populated list
List<E> list=Arrays.asList(array);
// convert list to populated set
HashSet<E> set=new HashSet<E>();
set.addAll(list);
// convert set to array & return,
// use cast because you can't create generic arrays
return (E[]) set.toArray();
}