private List<BlockInfo> fillSegmentIdToTableInfoMap(List<TableBlockInfo> tableBlockInfos,AbsoluteTableIdentifier absoluteTableIdentifier){
  Map<String,List<BlockInfo>> map=segmentIdToBlockListMap.get(absoluteTableIdentifier);
  if (null == map) {
    map=new ConcurrentHashMap<String,List<BlockInfo>>();
    segmentIdToBlockListMap.put(absoluteTableIdentifier,map);
  }
  BlockInfo temp=null;
  List<BlockInfo> blockInfosNeedToLoad=new ArrayList<>();
  for (  TableBlockInfo info : tableBlockInfos) {
    List<BlockInfo> tempTableBlockInfos=map.get(info.getSegmentId());
    if (null == tempTableBlockInfos) {
      tempTableBlockInfos=new ArrayList<>();
      map.put(info.getSegmentId(),tempTableBlockInfos);
    }
    temp=new BlockInfo(info);
    if (!tempTableBlockInfos.contains(temp)) {
      tempTableBlockInfos.add(temp);
    }
    blockInfosNeedToLoad.add(temp);
  }
  return blockInfosNeedToLoad;
}

private List < BlockInfo > fillSegmentIdToTableInfoMap ( List < TableBlockInfo > tableBlockInfos , AbsoluteTableIdentifier absoluteTableIdentifier ) { Map < String , List < BlockInfo > > map = segmentIdToBlockListMap . get ( absoluteTableIdentifier ) ; if ( null == map ) { map = new ConcurrentHashMap < String , List < BlockInfo > > ( ) ; segmentIdToBlockListMap . put ( absoluteTableIdentifier , map ) ; } BlockInfo temp = null ; List < BlockInfo > blockInfosNeedToLoad = new ArrayList < > ( ) ; for ( TableBlockInfo info : tableBlockInfos ) { List < BlockInfo > tempTableBlockInfos = map . get ( info . getSegmentId ( ) ) ; if ( null == tempTableBlockInfos ) { tempTableBlockInfos = new ArrayList < > ( ) ; map . put ( info . getSegmentId ( ) , tempTableBlockInfos ) ; } temp = new BlockInfo ( info ) ; if ( ! tempTableBlockInfos . contains ( temp ) ) { tempTableBlockInfos . add ( temp ) ; } blockInfosNeedToLoad . add ( temp ) ; } return blockInfosNeedToLoad ; }
below method will be used to fill segment id to its block mapping map . it will group all the table block info based on segment id and it will fill
