Java 类it.unimi.dsi.fastutil.ints.IntIterators 实例源码

项目:RankSys    文件:AbstractCODECPreferenceData.java   
private static <Cx> IntIterator getIdx(Cx cidxs, int len, CODEC<Cx> x_codec) {
    if (len == 0) {
        return IntIterators.EMPTY_ITERATOR;
    }
    int[] idxs = new int[len];
    x_codec.dec(cidxs, idxs, 0, len);
    if (!x_codec.isIntegrated()) {
        atled(idxs, 0, len);
    }
    return new ArrayIntIterator(idxs);
}
项目:WebGraph    文件:MaskedIntIteratorTest.java   
public void test( final int length, final int numberOfZeroes ) {
    long seed = System.currentTimeMillis();
    Random random = new Random( seed );
    System.err.println( "Seed: " + seed );
    // Reads the length and number of 0s
    final int x[] = new int[ length ];
    boolean keep[] = new boolean[ length ];
    IntArrayList res = new IntArrayList();
    IntArrayList blocks = new IntArrayList();
    int i, j, p = 0;
    boolean dep;

    // Generate
    for ( i = 0; i < length; i++ ) p = x[ i ] = p + random.nextInt( 1000 );
    for ( i = 0; i < length-numberOfZeroes; i++ ) keep[ i ] = true;
    for ( i = 0; i < length; i++ ) {
        j = i + (int)( Math.random() * ( length - i ) );
        dep = keep[ i ]; keep[ i ] = keep[ j ]; keep[ j ] = dep;
    }

    // Compute result
    for ( i = 0; i < length; i++ ) if ( keep[ i ] ) res.add( x[ i ] );
    res.trim();
    int result[] = res.elements();

    // Prepare blocks
    boolean lookAt = true;
    int curr = 0;
    for ( i = 0; i < length; i++ ) {
        if ( keep[ i ] == lookAt ) curr++;
        else {
            blocks.add( curr );
            lookAt = !lookAt;
            curr = 1;
        }
    }
    blocks.trim();
    final int bs[] = blocks.elements();

    // Output 
    System.out.println( "GENERATED:" );
    for ( i = 0; i < length; i++ ) {
        if ( keep[ i ] ) System.out.print( '*' );
        System.out.print( x[ i ] + "  " );
    }
    System.out.println( "\nBLOCKS:" );
    for ( i = 0; i < bs.length; i++ )
        System.out.print( bs[ i ] + "  " );
    System.out.println( "\nEXPECTED RESULT:" );
    for ( i = 0; i < result.length; i++ ) 
        System.out.print( result[ i ] + "  " );
    System.out.println();

    LazyIntIterator maskedIterator = new MaskedIntIterator( bs, LazyIntIterators.lazy( new IntArrayList( x ).iterator() ) );

    for ( i = 0; i < result.length; i++ ) assertEquals( i + ": ", result[ i ], maskedIterator.nextInt() );
    assertEquals( -1, maskedIterator.nextInt() );

    // Test skips
    maskedIterator = new MaskedIntIterator( bs, LazyIntIterators.lazy( new IntArrayList( x ).iterator() ) );
    IntIterator results = IntIterators.wrap( result );

    for ( i = 0; i < result.length; i++ ) {
        int toSkip = random.nextInt( 5 );
        assertEquals( results.skip( toSkip ), maskedIterator.skip( toSkip ) );
        if ( results.hasNext() ) assertEquals( i + ": ", results.nextInt(), maskedIterator.nextInt() );
    }
    assertEquals( -1, maskedIterator.nextInt() );

}