0

如何用扩展集合中对象的不同对象的数组(对象 [])填充集合。

我得到了这个对象数组,我想将它转换成一组对象,扩展数组中的对象,如下所示:

    Object[] a = new Object[1];
    a[0] = new SomeObject();
    Set<SomeObject> aSet = new HashSet<SomeObject>(a);

如果不可能像这样将数组转换为 Set ,那么是否可以将数组转换为 List ?

注意:如果你想达到这个循环方式,如下所示:

Object[] a = new Object[1];
a[0] = new SomeObject("Something");
Set<SomeObject> aSet = new HashSet<SomeObject>();

for(int i = 0; i < a.length; i++){
aSet.add((SomeObject)a[i])  
}

但我不想这样做循环方式。
编辑: 是的......我知道所有对象都扩展了 java.lang.Object 类。

4

4 回答 4

4

回应 OP 最近的评论:

不知何故,我无法将此 List 转换为 Set,因此我让该方法将 List 转换为 Array 并返回该 Array

在这种情况下,您可以简单地这样做:

List<SomeObject> list = ...
Set<SomeObject> set = new HashSet<SomeObject>(list);

重要的是:此代码与强制转换完全无关!实际发生的是你有一个List对象,你创建一个新Set的并将列表中的所有元素复制到其中。此操作不会修改原始列表。

重复我的评论,您显然误解了 Java 中的强制转换意味着什么。对象转换的工作方式与原始值转换非常不同。请阅读有关此主题的一些文章,例如: http ://www.volantec.biz/castingObjects.htm

于 2012-06-01T09:51:33.690 回答
2

你首先决定你想用你的 UserObject 做什么。无论您是将所有内容保存UserObject在一个数组中,还是将它们保存在任何集合中。

存储两次对我来说意义不大,你只是消耗更多的内存。

编辑:

在这种情况下,请使用以下内容。

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray)); 
于 2012-06-01T09:36:37.963 回答
2

声明Object[] a = new Object[1];SomeObject[] a = new SomeObject[1];

使用以下代码:

SomeObject[] a = new SomeObject[1]
a[0] = new SomeObject();
Set<UserObject> aSet = new HashSet<UserObject>(Arrays.<UserObject> asList(a));
于 2012-06-01T09:36:41.390 回答
1
Object[] a = new Object[3];
a[0] = new String("SAMIR1");
a[1] = new String("SAMIR2");
a[2] = new String("SAMIR3");
Set<Object> aSet = new HashSet<Object>(Arrays.<Object> asList(a));
System.out.println(aSet);
于 2012-06-01T09:35:54.407 回答