我有一个方法如下,这个方法包含两个arraylist(“eventList”和“emailList”)。
List<EmailUID> emailid=SharedEvent.getEmailUid(filter, uri, exchWD, EmailShare);
public static List<EmailUID> getEmailUid(Filter filter, String uri, NexWebDav exchWD,
List<String> emailShare)
List eventsToday = null;
List<EmailUID> arrayList = new ArrayList<EmailUID>();
List<EmailUID> emailList = new ArrayList<EmailUID>();
List<EmailUID> eventList = new ArrayList<EmailUID>();
for (String email : emailShare) {
String uris = uri + email + "/events/";
InputStream stream = null;
try {
stream = exchWD.get(uris);
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
CalendarBuilder builder = new CalendarBuilder();
net.fortuna.ical4j.model.Calendar calendar = builder.build(br);
//eventsToday.add(email);
eventsToday = (List<?>) filter.filter(calendar.getComponents(Component.VEVENT));
arrayList=getEmailUID(eventsToday,email);
emailList.addAll(arrayList);//
eventList.addAll(eventsToday);//
} catch (ParserException e) {
LOGGER.error("Parse Exception"+e.getMessage());
} finally {
IOUtils.closeQuietly(stream);
}
}
//return eventList;
return emailList;
}
如何同时获取列表“eventList”和“emailList”
答案 0 :(得分:17)
单个函数中不可能有两个return statement
,但您可以换入新的Map
或List
并返回两个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;
}
答案 1 :(得分:12)
如果你真的需要,你可以把它们包装成一个只有2个List字段的对象。
另外,您可以返回2个列表的地图,每个列表都有一个唯一的键。
答案 2 :(得分:4)
您可以创建一个以两个列表作为其成员的类,然后可以使用您的列表返回此类对象。
答案 3 :(得分:2)
创建List<EmailUID>
个对象的列表,即List<List<EmailUID>>
。
将您的列表(eventList
和emailList
)添加到此超级列表。并返回此超级列表。
要稍后访问evenlist
,请使用此superList.get(0); //refers to eventlist
(假设您的方法已返回superList
,而evenlist
是该列表中的第一项):
答案 4 :(得分:2)
在Java中没有简单的方法可以做到这一点。您可以创建一个包含两个元素的小包装类,您可以返回两个列表的列表,一组列表或一个Map&gt;包含两个列表的两个条目。
答案 5 :(得分:2)
您可以将它们以数组形式返回。
public static List[] getEmailUid(Filter filter, String uri, NexWebDav exchWD,
List<String> emailShare) {
//
// Method body
//
return new List[] { eventList, emailList };
}
答案 6 :(得分:2)
您需要更改方法的签名。将返回类型更改为
ArrayList<String>[]
OR
ArrayList<ArrayList<String>>
根据所选的返回类型,编辑代码。
如果选择数组作为返回类型,则在返回之前添加以下行:
ArrayList<String>[] arr = new ArrayList<String>[2];
arr[0] = eventList;
arr[1] = emailList;
return arr;
同样,您可以为第二个选项添加代码。如果您需要进一步的帮助,请告诉我。
答案 7 :(得分:-1)
公共静态列表getData() {
/ *其他实现的代码* /
返回Arrays.asList(List1,list2);
}