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

Java 如何从同一方法返回2个ArrayList

Java 如何从同一方法返回2个ArrayList,java,arraylist,Java,Arraylist,我有一个如下的方法,这个方法包含两个arraylist(“eventList”和“emailList”) List emailid=SharedEvent.getEmailUid(过滤器、uri、exchWD、EmailShare); 公共静态列表getEmailUid(筛选器、字符串uri、NexWebDav exchWD、, 列表(电子邮件共享) List eventsToday=null; List arrayList=新建arrayList(); List emailList=new A

我有一个如下的方法,这个方法包含两个arraylist(“eventList”和“emailList”)

List emailid=SharedEvent.getEmailUid(过滤器、uri、exchWD、EmailShare);
公共静态列表getEmailUid(筛选器、字符串uri、NexWebDav exchWD、,
列表(电子邮件共享)
List eventsToday=null;
List arrayList=新建arrayList();
List emailList=new ArrayList();
List eventList=new ArrayList();
用于(字符串电子邮件:emailShare){
字符串uris=uri+email+“/events/”;
InputStream=null;
试一试{
stream=exchWD.get(URI);
BufferedReader br=新的BufferedReader(新的InputStreamReader(流));
CalendarBuilder=新的CalendarBuilder();
net.fortuna.ical4j.model.Calendar Calendar=builder.build(br);
//添加(电子邮件);
eventsToday=(List)filter.filter(calendar.getComponents(Component.VEVENT));
arrayList=getEmailUID(eventsToday,email);
emailList.addAll(arrayList)//
eventList.addAll(eventsToday)//
}捕获(解析){
LOGGER.error(“解析异常”+e.getMessage());
}最后{
IOUtils.安静地关闭(流);
}
}
//返回事件列表;
返回电子邮件列表;
}

如何同时获取列表“eventList”和“emailList”

不可能从单个函数中获得两个
返回语句
,但您可以使用新的
映射
列表
,并可以返回两个ArrayList

public Map<String,List<EmailUID>> getList()
  List<EmailUID> emailList = new ArrayList<EmailUID>();
  List<EmailUID> eventList = new ArrayList<EmailUID>();
  ...
  Map<String,List<EmailUID>> map =new HashMap();
  map.put("emailList",emailList);
  map.put("eventList",eventList);
  return map;
}
publicmap getList()
List emailList=new ArrayList();
List eventList=new ArrayList();
...
Map Map=newhashmap();
map.put(“emailList”,emailList);
map.put(“事件列表”,事件列表);
返回图;
}

创建
列表
对象的列表,即
列表
。 将您的列表(
事件列表
电子邮件列表
)添加到此超级列表。然后返回这个超级列表

要稍后访问
evenlist
,请使用此
superList.get(0)//参考事件列表


(假设
superList
是从您的方法返回的,并且
evenlist
是该列表中的第一项):

如果确实需要,您可以将它们包装到一个对象中,该对象只有两个列表字段


或者,您可以返回两个列表的映射,每个列表都有一个唯一的键。

在Java中没有简单的方法可以做到这一点。您可以创建一个小包装类来包含这两个元素,您可以返回两个列表的列表、一组两个列表,或者一个包含两个列表项的Map>。

您可以创建一个包含两个列表作为其成员的类,然后可以将此类对象与列表一起返回。

您可以将它们以数组形式返回

public static List[] getEmailUid(Filter filter, String uri, NexWebDav exchWD,
           List<String> emailShare) {
    //
    // Method body 
    //
    return new List[] { eventList, emailList };

}
public static List[]getEmailUid(过滤器过滤器、字符串uri、NexWebDav exchWD、,
列表(电子邮件共享){
//
//方法体
//
返回新列表[]{eventList,emailList};
}

您需要更改方法的签名。将返回类型更改为

ArrayList<String>[] 
ArrayList[]

ArrayList
根据所选的退货类型,编辑代码

如果选择数组作为返回类型,则在返回之前添加以下行:

ArrayList<String>[] arr = new ArrayList<String>[2];
arr[0] = eventList;
arr[1] = emailList;
return arr;
ArrayList[]arr=新的ArrayList[2];
arr[0]=事件列表;
arr[1]=电子邮件列表;
返回arr;
同样,您可以为第二个选项添加代码。如果需要进一步帮助,请告诉我。

公共静态列表getData() {

/*其他实现的代码*/

返回Arrays.asList(List1,list2)


}

谢谢大家的回答
ArrayList<ArrayList<String>>
ArrayList<String>[] arr = new ArrayList<String>[2];
arr[0] = eventList;
arr[1] = emailList;
return arr;