2017-12-19 10 views
-4

次のコードを読んで、有効期限を変更することはできません。 :ソートjavaの反復によるデータ出力

for (Iterator<String> i = expirations.iterator(); i.hasNext();) { 
String item = i.next(); 
System.out.println(+item); 
} 

それは次のように出力します:

20180329 
20180615 
20180119 
20180316 
20180921 
20180216 
20171222 
20180105 

私は[1]日付でこれをソートし、VaRの結果のようなものを介して第1の1を取る必要があります。

私はこれを試してみましたが、それはソートされません。

   for (Iterator<String> i = expirations.iterator(); i.hasNext();) { 
    String item = i.next(); 

    List list = new ArrayList(); 
     list.add(item); 

     // Sort list 
     Collections.sort(list); 
     Iterator iterator = list.iterator(); 
     while (iterator.hasNext()) { 
     System.out.println("sort LIST EXPIRATION: "+iterator.next()); 
     } 
} 
+0

どうやってそれをしようとしていますか?あなたが持っているソートのコードをいくつか教えてください。また、あなたの 'expirations'は何ですか?おそらく、それほど大きくない場合は、完全なコードを提供してください。そうすれば、それをcpしてコンパイルする方が簡単です。 –

+0

なぜ期限切れが重要だと思いますか? –

+1

私は、正しい方法は 'expirations'を最初にソートしてからそれを印刷するか、' expirations'を変更したくない場合は 'TreeSet'にコピーすることです。 'TreeSet'はあなたのデータを自動的にソートし、次にhttps://www.tutorialspoint.com/java/util/treeset_iterator.htmを使うことができます。 –

答えて

0

あなたはこのような例のためにそれを行うことができます。

List<String> expirations = Arrays.asList(new String[] {"20180329", "20180615", "20180119", 
    "20180316", "20180921", "20180216", "20171222", "20180105"}); 

Set<String> sortedSet = new TreeSet<>(expirations); 

for (Iterator<String> i = sortedSet.iterator(); i.hasNext();) { 
    String item = i.next(); 
    System.out.println(item); 
} 

私はあなたのexpirationsあるかわからないので、私はちょうど作らそれは単純なリストです。

出力:あなたは重複を維持したい場合は、別のアプローチを使用する必要がありますので

20171222 
20180105 
20180119 
20180216 
20180316 
20180329 
20180615 
20180921 

は、Setは重複を許可しないこと、しかし、注意してください。

+0

コレクションのタイプは何ですか:List、Set ... –

+0

https://docs.oracle.com/javase/7/docs/api/java /util/List.html#get(int) –

+0

あなたが何を求めているのかよく分かりません。これはJavaの基本です。たとえば、このhttps://docs.oracle.com/javase/tutorial/collections/interfaces/list.htmlを参照してください。 'expirations.get(0)'、 'expirations.get(1)' ...のようにインデックスで要素にアクセスすることができます。 –