2017-09-14 17 views
0

私はこのような予定表を含む配列を持っています。この配列にはすべての月のデータが含まれている可能性があります。配列を別の配列または異なる配列に分割する方法

calendarday: [CalendarDay{2017-8-13}, CalendarDay{2017-8-14}, CalendarDay{2017-9-18}, CalendarDay{2017-9-19}, CalendarDay{2017-10-15}, CalendarDay{2017-10-16}] 

私が望むのは、その配列の値を月ごとに異なる配列または別のキーを持つ同じ配列に分割することです。この

calendarday: [CalendarDay{2017-8-13}, CalendarDay{2017-8-14}] 

calendardayone: [CalendarDay{2017-9-18}, CalendarDay{2017-9-19}] 

などのように私が見つけたこの

calendarday: [ 
0:[CalendarDay{2017-8-13}, CalendarDay{2017-8-14}], 
1:[CalendarDay{2017-9-18}, CalendarDay{2017-9-19}], 
2:[CalendarDay{2017-10-15}, CalendarDay{2017-10-16}] 
] 

一つの方法は、条件ならば、すべての月をチェックして、それらの配列を分割することです。しかし、私はそれをしたくありません。私はすべての月の状態をチェックする必要はありませんので、代替の方法はありますか

すべての助けとアイデアをいただければ幸いです。ありがとうございました。

+0

この例を参照してください。https://stackoverflow.com/a/36678648/3883957「Collectors.groupingBy」を使用しています – yishaiz

+0

例を見ましたが、lamda式はこのレベルではサポートされていません。 –

+0

多分Apache Commons Collectionsを使用するこの答えhttps://stackoverflow.com/a/35524722/3883957は役に立ちますか? – yishaiz

答えて

1

に応じて、異なる配列にそれを置くことができますキーで辞書にすべてのCalendarDayを保ちます月です。だから我々はこのようなものを開始します。

String[] array = {"CalendarDay{2017-8-13}", "CalendarDay{2017-8-14}", "CalendarDay{2017-9-18}", "CalendarDay{2017-9-19}", "CalendarDay{2017-10-15}", "CalendarDay{2017-10-16}"}; 

そして、単に各文字列を分割し、辞書に保存し、配列を反復:

Map<String, ArrayList<String>> dictionary = new HashMap<String, ArrayList<String>>(); 
for (String currentString : array) { 
    String month = currentString.split("-")[1]; 
    ArrayList<String> values = dictionary.get(month); 
    if (values == null) { 
     values = new ArrayList<String>(); 
    } 
    values.add(currentString); 
    dictionary.put(month, values); 
} 

そして、我々はこのようなもので終わる:

{ 
    8=[CalendarDay{2017-8-13}, CalendarDay{2017-8-14}], 
    9=[CalendarDay{2017-9-18}, CalendarDay{2017-9-19}], 
    10=[CalendarDay{2017-10-15}, CalendarDay{2017-10-16}] 
} 
+0

辞書はどのように見えますか?私はそれを試したが、それは空を与える。 –

+0

私のコードを使いましたか? –

+0

はい私はカレンダーの配列リストを文字列配列リストに変換してコードを実行しました –

0

あなたは各要素の月の値を取得し、これは私が考えていたソリューションである値

+0

私はその解決策を知っていますが、私はすべての月をチェックする必要がないように異なる方法があれば私が望むものです –

関連する問題