blob: 99cb0356e8aa35511aa8647f33d2eb7d6bc2490b [file] [log] [blame]
/*
* Copyright (C) 2014 The Android Open Source Project
*
* 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 android.hardware.camera2.utils;
import java.util.List;
/**
* Various assortment of list utilities.
*
* <p>Using a {@code null} list is supported and will almost always return the default value
* (e.g. {@code false}, or {@code null}).</p>
*/
public class ListUtils {
/** Return {@code} true if the {@code list} contains the {@code needle}. */
public static <T> boolean listContains(List<T> list, T needle) {
if (list == null) {
return false;
} else {
return list.contains(needle);
}
}
/**
* Return {@code true} if the {@code list} is only a single element equal to
* {@code single}.
*/
public static <T> boolean listElementsEqualTo(List<T> list, T single) {
if (list == null) {
return false;
}
return (list.size() == 1 && list.contains(single));
}
/**
* Return a human-readable representation of a list (non-recursively).
*/
public static <T> String listToString(List<T> list) {
if (list == null) {
return null;
}
StringBuilder sb = new StringBuilder();
sb.append('[');
int size = list.size();
int i = 0;
for (T elem : list) {
sb.append(elem);
if (i != size - 1) {
sb.append(',');
}
i++;
}
sb.append(']');
return sb.toString();
}
/**
* Return the first item from {@code choices} that is contained in the {@code list}.
*
* <p>Choices with an index closer to 0 get higher priority. If none of the {@code choices}
* are in the {@code list}, then {@code null} is returned.
*
* @param list a list of objects which may or may not contain one or more of the choices
* @param choices an array of objects which should be used to select an item from
*
* @return the first item from {@code choices} contained in {@code list}, otherwise {@code null}
*/
public static <T> T listSelectFirstFrom(List<T> list, T[] choices) {
if (list == null) {
return null;
}
for (T choice : choices) {
if (list.contains(choice)) {
return choice;
}
}
return null;
}
private ListUtils() {
throw new AssertionError();
}
}