edu.uci.ics.jung.algorithms.util.Indexer.java Source code

Java tutorial

Introduction

Here is the source code for edu.uci.ics.jung.algorithms.util.Indexer.java

Source

/*
* Copyright (c) 2003, the JUNG Project and the Regents of the University 
* of California
* All rights reserved.
*
* This software is open-source under the BSD license; see either
* "license.txt" or
* http://jung.sourceforge.net/license.txt for a description.
*/
package edu.uci.ics.jung.algorithms.util;

import java.util.Collection;

import org.apache.commons.collections15.BidiMap;
import org.apache.commons.collections15.bidimap.DualHashBidiMap;

/**
 * A class providing static methods useful for improving the
 * performance of graph algorithms.
 * 
 * @author Tom Nelson
 *
 */
public class Indexer {

    /**
     * Returns a <code>BidiMap</code> mapping each element of the collection to its
     * index as encountered while iterating over the collection. The purpose
     * of the index operation is to supply an O(1) replacement operation for the
     * O(n) <code>indexOf(element)</code> method of a <code>List</code>
     * @param <T>
     * @param collection
     * @return a bidirectional map from collection elements to 0-based indices
     */
    public static <T> BidiMap<T, Integer> create(Collection<T> collection) {
        return create(collection, 0);
    }

    /**
     * Returns a <code>BidiMap</code> mapping each element of the collection to its
     * index as encountered while iterating over the collection. The purpose
     * of the index operation is to supply an O(1) replacement operation for the
     * O(n) <code>indexOf(element)</code> method of a <code>List</code>
     * @param <T>
     * @param collection
     * @param start start index
     * @return a bidirectional map from collection elements to start-based indices
     */
    public static <T> BidiMap<T, Integer> create(Collection<T> collection, int start) {
        BidiMap<T, Integer> map = new DualHashBidiMap<T, Integer>();
        int i = start;
        for (T t : collection) {
            map.put(t, i++);
        }
        return map;
    }
}