2012-10-18 3 views

答えて

10

を2つのリストフィールドだけを持つオブジェクトにそれらを追加します。

また、2リストのマップを返すこともできます。それぞれのマップには固有のキーがあります。

13

をリスト「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; 
    } 

これは、単一の関数から2 return statementことはできませんが、あなたは新しいMapまたはListにラップすることができますし、2つの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; 
} 
2

List<EmailUID>オブジェクト、すなわちList<List<EmailUID>>のリストを作成します。 これにスーパーリストにあなたのリスト(eventListおよびemailList)を追加してください。そして、このスーパーリストを返す。

このsuperList.get(0); //refers to eventlist

(仮にsuperListはあなたのメソッドから返されるとevenlistはそのリストの最初の項目でいた)を使用、後でevenlistにアクセスするには:あなたが本当にしている場合、あなたがラップする可能性がまあ

2

これをJavaで簡単に行う方法はありません。両方の要素を含む小さなラッパークラスを作成し、両方のリストのリスト、両方のリストのセット、または両方のリストで2つのエントリを含むMap>を返すことができます。

4

2つのリストをメンバーとして持つクラスを作成し、そのクラスオブジェクトをリストで返すことができます。

1

ただ配列に戻すことができます。

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

} 
2

メソッドの署名を変更する必要があります。選択された戻り値の型に基づいて

ArrayList<String>[] 

OR

ArrayList<ArrayList<String>> 

に戻り値の型を変更し、コードを編集します。配列が戻り、追加、次の行の前に、戻り値の型として選択されている場合

ArrayList<String>[] arr = new ArrayList<String>[2]; 
arr[0] = eventList; 
arr[1] = emailList; 
return arr; 

同様に、第二のオプションのためのコードを追加することができます。さらなる助けが必要な場合はお知らせください。

関連する問題