Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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_Casting_Set - Fatal编程技术网

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

Java 如何用扩展集合中对象的不同对象数组填充集合 如何使用扩展集合中对象的不同对象的数组(对象[])填充集合。,java,arrays,object,casting,set,Java,Arrays,Object,Casting,Set,我得到了这个对象数组,我想将其转换为一组对象,这些对象扩展了数组中的对象,如下所示: Object[] a = new Object[1]; a[0] = new SomeObject(); Set<SomeObject> aSet = new HashSet<SomeObject>(a); Object[]a=新对象[1]; a[0]=新的SomeObject(); Set aSet=新哈希集(a); 如果无法将数组强制转换为那样的集合,那么

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

    Object[] a = new Object[1];
    a[0] = new SomeObject();
    Set<SomeObject> aSet = new HashSet<SomeObject>(a);
Object[]a=新对象[1];
a[0]=新的SomeObject();
Set aSet=新哈希集(a);
如果无法将数组强制转换为那样的集合,那么是否可以将数组强制转换为列表

注意:如果您想通过如下循环方式实现此目标:

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])  
}
Object[]a=新对象[1];
a[0]=新的SomeObject(“某物”);
Set aSet=newhashset();
for(int i=0;i
但我不想用循环的方式来做。
编辑: 是的。。。我知道所有对象都扩展了java.lang.Object类。

Object[]a=新对象[3];
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);
a[0]=新字符串(“SAMIR1”); a[1]=新字符串(“SAMIR2”); a[2]=新字符串(“SAMIR3”); Set aSet=newhashset(Arrays.asList(a)); 系统输出打印LN(aSet);
您首先决定要对UserObject执行什么操作。 是将所有
UserObject
保存在一个数组中,还是将它们保存在任何集合下

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

编辑:

在这种情况下,使用下面的东西

Set<T> mySet = new HashSet<T>(Arrays.asList(someArray)); 
Set mySet=newhashset(Arrays.asList(someArray));

声明
对象[]a=新对象[1]as
SomeObject[]a=新的SomeObject[1]

使用以下代码:

SomeObject[] a = new SomeObject[1]
a[0] = new SomeObject();
Set<UserObject> aSet = new HashSet<UserObject>(Arrays.<UserObject> asList(a));
SomeObject[]a=新的SomeObject[1]
a[0]=新的SomeObject();
Set aSet=newhashset(Arrays.asList(a));

针对OP最近的评论:

不知何故,我无法将此列表强制转换为一个集合,因此我让该方法将列表强制转换为一个数组并返回该数组

在这种情况下,您可以简单地执行以下操作:

List<SomeObject> list = ...
Set<SomeObject> set = new HashSet<SomeObject>(list);
List=。。。
Set Set=新哈希集(列表);
重要事项:此代码与铸造完全无关!实际上,您有一个对象的
列表
,您创建了一个新的
集合
,并将列表中的所有元素复制到其中。此操作不会修改原始列表

重复我的评论,您显然误解了Java中的强制转换的含义。对象的强制转换的工作方式与原始值的强制转换非常不同。请阅读一些关于这个主题的文章,例如:

您的代码与铸造完全无关。您可能应该阅读类似本文的内容,以了解对象强制转换的真正含义及其工作原理:@Natix我想问题是:我有一个
对象[]
,我知道它只包含
SomeObject
项。我如何填写
集合
,而不必在每个项目上循环,并将其从
对象
投射到
某个对象
。你自己的问题有什么问题?对那些努力回答这个问题的人相当不尊重。这不会编译-
a
Object[]
,而不是
UserObject[]
。我看到你删除了相关部分,但你可以只做
Set s=new HashSet(Arrays.asList(o))(获取
不安全的typecast
)。我正在使用hibernate从数据库获取对象列表,这些对象是由hibernate在“列表”中返回的。我获得了此方法,该方法从数据库获取具有最大值的sertain对象列表。不知何故,我无法将此列表强制转换为一个集合,因此我让该方法将列表强制转换为一个数组并返回该数组。我可以将这个返回的方法数组转换成我想要的任何对象的集合或列表。这是我的方法的标题:public Object[]getObjects(int-maxResults,Class-Class)抛出异常您知道Set不允许重复值,并且您的列表可以有重复值。因此,尝试将它们放在Set中是一个好的解决方案吗?@JustmemyselfandI当然您不能将列表强制转换为Set,它们是不同的。您可以做的是创建集合,然后遍历列表,尝试将每个元素添加到集合中,在此过程中删除列表中的任何重复对象。@BOSS,因为我的数据库是用域对象创建的,而我使用集合定义了一些ObjectProxy,因为Hibernate接受这一点,并自动创建具有复合主键的副表。当我使用列表时;hibernate不会声明任何主密钥。这就是我使用集合而不是集合的原因List@AnthonyGrist所以你建议使用for循环遍历返回的列表来填充一个新的集合,这样我就可以返回那个集合了?这难道不需要花费更多的计算机资源并减慢进程吗?