@Test
public void testForEachReverse(){

  TxEntity t1 = TxEntity.builder().beginTime(new Date(System.currentTimeMillis())).build();
  TxEntity t2 = TxEntity.builder().beginTime(new Date(System.currentTimeMillis()+10)).build();
  TxEntity t3 = TxEntity.builder().beginTime(t2.getBeginTime()).build(); // beginTime same t2
  TxEntity t4 = TxEntity.builder().beginTime(new Date(System.currentTimeMillis()+20)).build();
  List<TxEntity> entities = Lists.newArrayList(t4, t3, t2, t1);
  // t1,t2,t3,t4
  TxEntities txEntities = new TxEntities();
  ListIterator<TxEntity> iterator = entities.listIterator(entities.size());
  while(iterator.hasPrevious()){
    entities.forEach(t->txEntities.put(UUID.randomUUID().toString(),iterator.previous()));
  }
  // t4,t3,t2,t1
  List<TxEntity> reverseEntities = new ArrayList();
  txEntities.forEachReverse((k,v)->{
    reverseEntities.add(v);
  });
  assertTrue(Iterables.elementsEqual(entities, reverseEntities));
}