Java 哈希集对象

Java 哈希集对象,java,object,set,hashset,Java,Object,Set,Hashset,我正在编写一段代码,其中包含大量对象并将它们添加到另一个数组中。问题是,我不想要任何复制品。有没有办法实现一个Hashset来解决这个问题 public static Statistic[] combineStatistics(Statistic[] rptData, Statistic[] dbsData) { HashSet<Statistic> set = new HashSet<Statistic>(); for (int i=0; i&l

我正在编写一段代码,其中包含大量对象并将它们添加到另一个数组中。问题是,我不想要任何复制品。有没有办法实现一个Hashset来解决这个问题

    public static Statistic[] combineStatistics(Statistic[] rptData, Statistic[] dbsData) {
    HashSet<Statistic> set = new HashSet<Statistic>();
    for (int i=0; i<rptData.length; i++) {
        set.add(rptData[i]);
    }
    /*If there's no data in the database, we don't have anything to add to the new array*/
    if (dbsData!=null) {
        for (int j=0; j<dbsData.length;j++) {
            set.add(dbsData[j]);
        }
    }
    Statistic[] total=set.toArray(new Statistic[0]);
    for (int workDummy=0; workDummy<total.length; workDummy++) {
        System.out.println(total[workDummy].serialName);
    }

    return total;
}//end combineStatistics()
公共静态统计[]组合统计(统计[]rptData,统计[]dbsData){
HashSet=newhashset();

for(int i=0;i取决于您所指的复制对象。如果您指的是相同的对象,则可以使用列表,在将其添加到列表之前,只需查看列表是否包含该对象

Object obj = new Object();
List<Object> list = new ArrayList<Object>();

if (!list.contains(obj)) {
    list.add(obj);
}
objectobj=newobject();
列表=新的ArrayList();
如果(!list.contains(obj)){
列表。添加(obj);
}

取决于您所指的复制对象。如果您指的是相同的对象,则可以使用列表,在将其添加到列表之前,只需查看列表中是否包含该对象

Object obj = new Object();
List<Object> list = new ArrayList<Object>();

if (!list.contains(obj)) {
    list.add(obj);
}
objectobj=newobject();
列表=新的ArrayList();
如果(!list.contains(obj)){
列表。添加(obj);
}

取决于您所指的复制对象。如果您指的是相同的对象,则可以使用列表,在将其添加到列表之前,只需查看列表中是否包含该对象

Object obj = new Object();
List<Object> list = new ArrayList<Object>();

if (!list.contains(obj)) {
    list.add(obj);
}
objectobj=newobject();
列表=新的ArrayList();
如果(!list.contains(obj)){
列表。添加(obj);
}

取决于您所指的复制对象。如果您指的是相同的对象,则可以使用列表,在将其添加到列表之前,只需查看列表中是否包含该对象

Object obj = new Object();
List<Object> list = new ArrayList<Object>();

if (!list.contains(obj)) {
    list.add(obj);
}
objectobj=newobject();
列表=新的ArrayList();
如果(!list.contains(obj)){
列表。添加(obj);
}

如果您希望值相等而不是引用相等,请在
对象上正确执行
相等(对象obj)
hashCode()

Set<YourObject> set = new HashSet<YourObject>(yourCollection);

如果希望值相等而不是引用相等,请在
YourObject
上正确执行
equals(objectobj)
hashCode()

Set<YourObject> set = new HashSet<YourObject>(yourCollection);

如果希望值相等而不是引用相等,请在
YourObject
上正确执行
equals(objectobj)
hashCode()

Set<YourObject> set = new HashSet<YourObject>(yourCollection);

如果希望值相等而不是引用相等,请在
YourObject
上正确执行
equals(objectobj)
hashCode()

Set<YourObject> set = new HashSet<YourObject>(yourCollection);

我想你应该注意:

1-如果原始集合中存在重复项,该怎么办?使用添加到阵列中的第一个集合?使用其他集合

2-您肯定需要实现equals和hashcode,这样您就可以知道什么是重复对象

3-你打算创建一个固定大小的数组,然后不再添加对象吗?还是继续添加东西


实际上,您可以使用任何类型的集合,但是如果您使用LinkedHashSet,那么您将有一个定义的迭代顺序(看起来像一个数组)。HashSet不会保证任何顺序,TreeSet将尝试按升序排列数据。

我想您应该注意:

1-如果原始集合中存在重复项,该怎么办?使用添加到阵列中的第一个集合?使用其他集合

2-您肯定需要实现equals和hashcode,这样您就可以知道什么是重复对象

3-你打算创建一个固定大小的数组,然后不再添加对象吗?还是继续添加东西


实际上,您可以使用任何类型的集合,但是如果您使用LinkedHashSet,那么您将有一个定义的迭代顺序(看起来像一个数组)。HashSet不会保证任何顺序,TreeSet将尝试按升序排列数据。

我想您应该注意:

1-如果原始集合中存在重复项,该怎么办?使用添加到阵列中的第一个集合?使用其他集合

2-您肯定需要实现equals和hashcode,这样您就可以知道什么是重复对象

3-你打算创建一个固定大小的数组,然后不再添加对象吗?还是继续添加东西


实际上,您可以使用任何类型的集合,但是如果您使用LinkedHashSet,那么您将有一个定义的迭代顺序(看起来像一个数组)。HashSet不会保证任何顺序,TreeSet将尝试按升序排列数据。

我想您应该注意:

1-如果原始集合中存在重复项,该怎么办?使用添加到阵列中的第一个集合?使用其他集合

2-您肯定需要实现equals和hashcode,这样您就可以知道什么是重复对象

3-你打算创建一个固定大小的数组,然后不再添加对象吗?还是继续添加东西



实际上,您可以使用任何类型的集合,但是如果您使用LinkedHashSet,那么您将有一个定义的迭代顺序(看起来像一个数组).HashSet不会保证任何顺序,TreeSet将尝试按升序排列数据。

对不起,我使用Java您可以使用标准HashSet。但您必须在放入的对象上重写equals和hashCode。对不起,我使用Java您可以使用标准HashSet。但您必须在放入的对象上重写equals和hashCode。对不起,我m'使用Java您可以使用标准哈希集。但是您必须在放入的对象上重写equals和hashCode。对不起,我使用Java您可以使用标准哈希集。但是您必须在放入的对象上重写equals和hashCode。这是O(n^2)这对大集合来说是非常糟糕的。对,对于大集合来说是正确的。虽然,如果他只处理一个小集合,哈希可能会导致速度变慢。对他来说更好的是,他只需要测量它。不管怎样,我更喜欢你的解决方案,并会给你投票支持。他直接说他有一个“大量对象”在他的问题中,我将处理成千上万个对象。这是O(n^2),对于大型集合来说非常糟糕。正确,对于大型集合来说。尽管,如果他只处理小型集合