
org.yaml.snakeyaml.util.ArrayUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.portal.tools.rest.builder
Show all versions of com.liferay.portal.tools.rest.builder
Liferay Portal Tools REST Builder
The newest version!
/**
* Copyright (c) 2008, SnakeYAML
*
* 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 org.yaml.snakeyaml.util;
import java.util.AbstractList;
import java.util.Collections;
import java.util.List;
/**
* Array manipulation
*/
public class ArrayUtils {
private ArrayUtils() {}
/**
* Returns an unmodifiable {@code List} backed by the given array. The method doesn't copy the
* array, so the changes to the array will affect the {@code List} as well.
*
* @param class of the elements in the array
* @param elements - array to convert
* @return {@code List} backed by the given array
*/
public static List toUnmodifiableList(E[] elements) {
return elements.length == 0 ? Collections.emptyList()
: new UnmodifiableArrayList(elements);
}
/**
* Returns an unmodifiable {@code List} containing the second array appended to the first one. The
* method doesn't copy the arrays, so the changes to the arrays will affect the {@code List} as
* well.
*
* @param class of the elements in the array
* @param array1 - the array to extend
* @param array2 - the array to add to the first
* @return {@code List} backed by the given arrays
*/
public static List toUnmodifiableCompositeList(E[] array1, E[] array2) {
List result;
if (array1.length == 0) {
result = toUnmodifiableList(array2);
} else if (array2.length == 0) {
result = toUnmodifiableList(array1);
} else {
result = new CompositeUnmodifiableArrayList(array1, array2);
}
return result;
}
private static class UnmodifiableArrayList extends AbstractList {
private final E[] array;
UnmodifiableArrayList(E[] array) {
this.array = array;
}
@Override
public E get(int index) {
if (index >= array.length) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size());
}
return array[index];
}
@Override
public int size() {
return array.length;
}
}
private static class CompositeUnmodifiableArrayList extends AbstractList {
private final E[] array1;
private final E[] array2;
CompositeUnmodifiableArrayList(E[] array1, E[] array2) {
this.array1 = array1;
this.array2 = array2;
}
@Override
public E get(int index) {
E element;
if (index < array1.length) {
element = array1[index];
} else if (index - array1.length < array2.length) {
element = array2[index - array1.length];
} else {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size());
}
return element;
}
@Override
public int size() {
return array1.length + array2.length;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy