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

com.google.firebase.database.collection.LLRBNode Maven / Gradle / Ivy

Go to download

This is the official Firebase Admin Java SDK. Build extraordinary native JVM apps in minutes with Firebase. The Firebase platform can power your app’s backend, user authentication, static hosting, and more.

There is a newer version: 9.2.0
Show newest version
/*
 * Copyright 2017 Google Inc.
 *
 * 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 com.google.firebase.database.collection;

import java.util.Comparator;

public interface LLRBNode {

  LLRBNode copy(K key, V value, Color color, LLRBNode left, LLRBNode right);

  LLRBNode insert(K key, V value, Comparator comparator);

  LLRBNode remove(K key, Comparator comparator);

  boolean isEmpty();

  boolean isRed();

  K getKey();

  V getValue();

  LLRBNode getLeft();

  LLRBNode getRight();

  LLRBNode getMin();

  LLRBNode getMax();

  int count();

  void inOrderTraversal(NodeVisitor visitor);

  boolean shortCircuitingInOrderTraversal(ShortCircuitingNodeVisitor visitor);

  boolean shortCircuitingReverseOrderTraversal(ShortCircuitingNodeVisitor visitor);

  enum Color {
    RED,
    BLACK
  }

  interface ShortCircuitingNodeVisitor {

    boolean shouldContinue(K key, V value);
  }

  abstract class NodeVisitor implements ShortCircuitingNodeVisitor {

    @Override
    public boolean shouldContinue(K key, V value) {
      visitEntry(key, value);
      return true;
    }

    public abstract void visitEntry(K key, V value);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy