net.automatalib.commons.smartcollections.SmartSequence Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of automata-commons-smartcollections Show documentation
Show all versions of automata-commons-smartcollections Show documentation
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.
/* 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.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);
}