protected <O> Map<O, IntList> partition(List<? extends O> classcolumn) {
    Map<O, IntList> classes = new HashMap<>();
    Iterator<? extends O> iter = classcolumn.iterator();
    for(int i = 0; iter.hasNext(); i++) {
      O lbl = iter.next();
      IntList ids = classes.get(lbl);
      if(ids == null) {
        ids = new IntArrayList();
        classes.put(lbl, ids);
      }
      ids.add(i);
    }
    return classes;
  }
protected < O > Map < O , IntList > partition ( List < ? extends O > classcolumn ) { Map < O , IntList > classes = new HashMap < > ( ) ; Iterator < ? extends O > iter = classcolumn . iterator ( ) ; for ( int i = 0 ; iter . hasNext ( ) ; i ++ ) { O lbl = iter . next ( ) ; IntList ids = classes . get ( lbl ) ; if ( ids == null ) { ids = new IntArrayList ( ) ; classes . put ( lbl , ids ) ; } ids . add ( i ) ; } return classes ; }
Partition the bundle based on the class label.

@param classcolumn
@return Partitioned data set.