Java 如何从同一方法返回2个ArrayList
我有一个如下的方法,这个方法包含两个arraylist(“eventList”和“emailList”)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
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;