【问题标题】:Joining two lists of objects in java在java中加入两个对象列表
【发布时间】:2016-11-25 20:24:33
【问题描述】:

我有以下一类实例:

package com.sample;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement (name = "instance")
public class Instance {

int id;
double startValue;
double endValue;
double duration;
String Code;

public int getId() {
    return id;
}
@XmlElement (name = "ID")
public void setId(int id) {
    this.id = id;
}
public double getStart() {
    return startValue;
}
@XmlElement
public void setStart(double start) {
    this.startValue = start;
}
public double getEnd() {
    return endValue;
}
@XmlElement
public void setEnd(double end) {
    this.endValue = end;
}

public void setDuration() {
    duration = endValue - startValue;
}
public String getCode() {
    return Code;
}
@XmlElement
public void setCode(String code) {
    Code = code;
}

}

每个实例对象都通过 jaxb 解组器映射到事件 XML 文件中的值。然后将这些实例对象存储在名为 Instances 的列表类中,如下所示:

package com.sample;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement (name = "ALL_INSTANCES")
@XmlAccessorType(XmlAccessType.FIELD)
public class Instances {

@XmlElement(name = "instance")
private List<Instance> instances = null;

public List<Instance> getInstances() {
    return instances;
}
public void setInstances(List<Instance> instances) {
    this.instances = instances;
}

public int getLength() {
    return instances.size();
}

public static List<Instances> getUnion(List<Instances> one, List<Instances>      two) { 
    List<Instances> union = new ArrayList<Instances>(one); 
    union.addAll(two); 
    return union; 
}
}

在 main 方法中,我试图在调用解组过程后调用两个实例列表的 getUnion() 方法以合并为一个。

Instances ins = (Instances) jaxbUnmarshaller.unmarshal(file);
Instances ins1 = (Instances) jaxbUnmarshaller.unmarshal(file1);
Instances.getUnion(ins, ins1);

但是说我得到“Instances 类型中的方法 getUnion(List, List) 不适用于参数 (Instances, Instances)”。不知道我说得对还是设计对了。

基本上,我的 Instances 类需要一种方法,将两个 Instances 连接到一个 List 中进行处理。

谢谢。

【问题讨论】:

  • 这和它说的差不多——你有一个需要两个Lists的方法,你试图传递两个Instancess,而Instances不是List,那么您期望会发生什么?

标签: java list class join append


【解决方案1】:

该方法接受两个List&lt;Instance&gt; 类型的参数,而不是Instances 类型的参数,这有点令人困惑,您最好更改getUnion 方法。但就目前而言,您可以像这样调用它:

Instances ins = (Instances) jaxbUnmarshaller.unmarshal(file);
Instances ins1 = (Instances) jaxbUnmarshaller.unmarshal(file1);
List<Instance> result = Instances.getUnion(ins.getInstances(), ins1.getInstances());

【讨论】:

  • 非常感谢。在凌晨 5 点过度思考问题无济于事。
猜你喜欢
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多