CodeRule Object:
@Data
public static class OrderEntry {
private String entryNumber;
// giftFlag=1 means the orderEntry is a gift entry
private Integer giftFlag;
private List<String> sourceEntryNumbers;
}
I have a list of orderEntry, it contains normal entry and gift entry. Now I want to sort the orderEntry list with specified order, orderEntry firstly, if this orderEntry have gift entry, then gift entry secondly.
How to sort this list? Any help?
@Test
public void testSort() {
OrderEntry orderEntry1 = new OrderEntry();
orderEntry1.setEntryNumber("1");
OrderEntry orderEntry2 = new OrderEntry();
orderEntry2.setEntryNumber("2");
OrderEntry orderEntry3 = new OrderEntry();
orderEntry3.setGiftFlag(1);
// it means this gift orderEntry created from orderEntry1 and orderEntry2
orderEntry3.setSourceEntryNumbers(Arrays.asList("1", "2"));
OrderEntry orderEntry4 = new OrderEntry();
orderEntry4.setEntryNumber("3");
OrderEntry orderEntry5 = new OrderEntry();
orderEntry5.setGiftFlag(1);
// it means this gift orderEntry created from orderEntry3
orderEntry5.setSourceEntryNumbers(Arrays.asList("3"));
OrderEntry orderEntry6 = new OrderEntry();
orderEntry6.setEntryNumber("4");
OrderEntry orderEntry7 = new OrderEntry();
orderEntry7.setGiftFlag(1);
// it means this gift orderEntry created from orderEntry3
orderEntry7.setSourceEntryNumbers(Arrays.asList("4"));
OrderEntry orderEntry8 = new OrderEntry();
orderEntry8.setEntryNumber("8");
List<OrderEntry> list = new ArrayList<>();
list.add(orderEntry1);
list.add(orderEntry2);
list.add(orderEntry4);
list.add(orderEntry6);
list.add(orderEntry3);
list.add(orderEntry5);
list.add(orderEntry7);
list.add(orderEntry8);
System.out.println(JSON.toJSONString(list));
// output:
// [{"entryNumber":"1"},{"entryNumber":"2"},{"entryNumber":"3"},{"entryNumber":"4"},{"giftFlag":1,"sourceEntryNumbers":["1","2"]},{"giftFlag":1,"sourceEntryNumbers":["3"]},{"giftFlag":1,"sourceEntryNumbers":["4"]},{"entryNumber":"8"}]
// expected output:
// [{"entryNumber":"1"},{"entryNumber":"2"},{"giftFlag":1,"sourceEntryNumbers":["1","2"]},{"entryNumber":"3"},{"giftFlag":1,"sourceEntryNumbers":["3"]},{"entryNumber":"4"},{"giftFlag":1,"sourceEntryNumbers":["4"]},{"entryNumber":"8"}]
}