Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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 从方法返回ArrayList_Java_Arraylist - Fatal编程技术网

Java 从方法返回ArrayList

Java 从方法返回ArrayList,java,arraylist,Java,Arraylist,从该方法返回arraylist时遇到问题。该方法应检查给定的保险类型与存储的保险类型。如果匹配,则将删除该元素并显示其余元素 请在此建议返回arraylist的语法 public ArrayList<Insurance> retrieveDetails(String insType){ Iterator<Insurance> itr=insurancelist.iterator(); while(itr.hasNext()) { Insurance c

从该方法返回arraylist时遇到问题。该方法应检查给定的保险类型与存储的保险类型。如果匹配,则将删除该元素并显示其余元素

请在此建议返回arraylist的语法

public ArrayList<Insurance> retrieveDetails(String insType){

  Iterator<Insurance> itr=insurancelist.iterator();

  while(itr.hasNext()) {
    Insurance c=itr.next();

  if(c.getInsuranceType().equals(insType)) {
    insurancelist.remove(c);

}
else
    System.out.println(c);


}
public ArrayList retrieveDetails(String insType){
迭代器itr=insurancelist.Iterator();
while(itr.hasNext()){
保险c=itr.next();
如果(c.getInsuranceType()等于(insType)){
保险清单。删除(c);
}
其他的
系统输出打印ln(c);
}

您看到的原因:

[com。Insurance@2a139a55,com。Insurance@15db9742,com。Insurance@6d06d69c]

保险类没有
toString()
方法。因此它使用对象中的默认
toString()
方法

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
如果您想在打印保险对象时让它更有意义,那么您需要在Insurance.java中创建一个类似这样的方法,假设您有一个insuranceType字符串和一个policyID值作为类变量:

public String toString() {
    return this.policyID+": "+this.insuranceType;
}

假设这就是你所拥有的:

enum InsuranceType {}

interface Insurance {
    InsuranceType getType()
}
这里有两个简单的选项: 1.在列表上使用迭代器,并在执行时删除元素。 2.在列表上循环,找到所有要删除的元素,然后在迭代后删除它们

public List<Insurance> retrieveDetais(List<Insurance> insurances, InsuranceType type) {
    List<Insurance> toRemove = new ArrayList<Insurance>();
    for (Insurance i : insurances) {
        if (i.getInsuranceType().equals(insuranceType)) {
            toRemove.add(i);
        }
    }
    for (Insurance i : toRemove) {
        insurances.remove(i);
    }
    return insurances;
}
public List retrieveDetais(列出保险、保险类型){
List toRemove=new ArrayList();
保险(一:保险){
如果(i.getInsuranceType().equals(insuranceType)){
删除。添加(i);
}
}
对于(保险i:toRemove){
(i)删除第(i)款;
}
退货保险;
}
您始终可以使其更通用,或采用迭代器路线:

public List<Insurance> removeInsuranceType(List<Insurance> insurances, InsuranceType type) {
    Iterator<Insurance> iter = insurances.iterator();
    while (iter.hasNext()) {
        Insurance i = iter.next();
        if (i.getType() == type) {
            iter.remove();
        }
    }
    return insurances;
}
公共列表删除保险类型(列表保险、保险类型){
迭代器iter=Iterator.Iterator();
while(iter.hasNext()){
保险i=iter.next();
if(i.getType()==type){
iter.remove();
}
}
退货保险;
}

这甚至不会编译-您有{}你应该添加返回语句你可以建议返回ArrayList的语法吗跳过其他部分。打印列表中的每个保险,然后返回。另外,请注意大括号。你是不是真的来问如何从方法返回一些东西?如果你需要有人建议如何做最基本的事情之一可能的话,你将有一个艰难的时间去任何地方