Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java对象数组数据中删除重复项_Java_Arrays_Object - Fatal编程技术网

从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();
}