All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.automatalib.commons.smartcollections.SmartSequence Maven / Gradle / Ivy

Go to download

This artifact provides efficient implementations for various collection data structures (esp. linked lists and priority queues), which have very insufficient implementation in the Java Collections Framework that makes it hard or even impossible to exploit their efficiencies.

There is a newer version: 0.11.0
Show newest version
/* Copyright (C) 2013-2019 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.commons.smartcollections;

/**
 * Sequence interface. A sequence is a collection where elements are stored in a specific order, and elements can be
 * inserted in between.
 *
 * @param 
 *         element class.
 *
 * @author Malte Isberner
 */
public interface SmartSequence extends SmartCollection {

    /**
     * Retrieves the reference to the preceding element, or null if the given reference references the
     * first element in the list.
     *
     * @param ref
     *         the reference
     *
     * @return the reference to the preceding element
     */
    ElementReference pred(ElementReference ref);

    /**
     * Retrieves the reference to the succeeding element, or null if the given reference references the
     * last element in the list.
     *
     * @param ref
     *         the reference
     *
     * @return the reference to the succeeding element
     */
    ElementReference succ(ElementReference ref);

    /**
     * Inserts the given element before the element referenced by the specified reference.
     *
     * @param element
     *         the element to be added.
     * @param ref
     *         reference to the element before which the new element is to be inserted.
     *
     * @return reference to the newly added element.
     */
    ElementReference insertBefore(E element, ElementReference ref);

    /**
     * Inserts the given element after the element referenced by the specified reference.
     *
     * @param element
     *         the element to be added.
     * @param ref
     *         reference to the element after which the new element is to be inserted.
     *
     * @return reference to the newly added element.
     */
    ElementReference insertAfter(E element, ElementReference ref);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy