net.automatalib.graphs.helpers.SimpleNodeIDs.java Source code

Java tutorial

Introduction

Here is the source code for net.automatalib.graphs.helpers.SimpleNodeIDs.java

Source

/* Copyright (C) 2013-2018 TU Dortmund
 * This file is part of AutomataLib, http://www.automatalib.net/.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.automatalib.graphs.helpers;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.google.common.collect.Maps;
import net.automatalib.graphs.SimpleGraph;
import net.automatalib.graphs.concepts.NodeIDs;

public class SimpleNodeIDs<N> implements NodeIDs<N> {

    private final Map<N, Integer> nodeIds;
    private final List<N> nodes;

    public SimpleNodeIDs(SimpleGraph<N> graph) {
        this.nodes = new ArrayList<>(graph.getNodes());
        int numNodes = this.nodes.size();
        this.nodeIds = Maps.newHashMapWithExpectedSize(numNodes);

        for (int i = 0; i < numNodes; i++) {
            N node = this.nodes.get(i);
            nodeIds.put(node, i);
        }
    }

    @Override
    public int getNodeId(N node) {
        return nodeIds.get(node);
    }

    @Override
    public N getNode(int id) {
        return nodes.get(id);
    }
}