Sorting a list with stream.sorted() in Java

前端 未结 6 1008
无人及你
无人及你 2020-11-27 05:32

I\'m interested in sorting a list from a stream. This is the code I\'m using:

list.stream()
    .sorted((o1, o2)->o1.getItem().getValue().compareTo(o2.get         


        
6条回答
  •  清酒与你
    2020-11-27 05:58

    Collection> itemCollection = basket.values();
    Iterator> itemIterator =   itemCollection.stream().sorted(new TestComparator()).collect(Collectors.toList()).iterator();
    
    
    
    package com.ie.util;
    
    import com.ie.item.Item;
    
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    public class TestComparator implements Comparator> {
    
    // comparator is used to sort the Items based on the price
    
    
        @Override
        public int compare(Map o1, Map o2) {
    
    
          //  System.out.println("*** compare method will be called *****");
    
    
            Item item1 = null;
            Item item2 = null;
    
    
            Set itemSet1 = o1.keySet();
            Iterator itemIterator1 = itemSet1.iterator();
            if(itemIterator1.hasNext()){
               item1 =   itemIterator1.next();
            }
    
            Set itemSet2 = o2.keySet();
            Iterator itemIterator2 = itemSet2.iterator();
            if(itemIterator2.hasNext()){
                item2 =   itemIterator2.next();
            }
    
    
            return -item1.getPrice().compareTo(item2.getPrice());
    
    
        }
    }
    

    **** this is helpful to sort the nested map objects like Map> here i sorted based on the Item object price .

提交回复
热议问题