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

org.d2ab.collection.Lists Maven / Gradle / Ivy

/*
 * Copyright 2016 Daniel Skogquist Åborg
 *
 * 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.d2ab.collection;

import java.util.*;

import static java.util.Arrays.asList;

/**
 * Utility methods for {@link List}s.
 */
public interface Lists {
	/**
	 * A pass-through version of {@link Collections#shuffle(List)}.
	 *
	 * @return the given list shuffled using {@link Collections#shuffle(List)}.
	 */
	static  List shuffle(List list) {
		Collections.shuffle(list);
		return list;
	}

	/**
	 * A pass-through version of {@link Collections#shuffle(List, Random)}.
	 *
	 * @return the given list shuffled using {@link Collections#shuffle(List, Random)}.
	 */
	static  List shuffle(List list, Random random) {
		Collections.shuffle(list, random);
		return list;
	}

	/**
	 * A pass-through version of {@link List#sort(Comparator)} sorted using
	 * {@link Comparator#naturalOrder()}.
	 *
	 * @return the given list sorted using {@link List#sort(Comparator)} with {@link Comparator#naturalOrder()}.
	 */
	static > List sort(List list) {
		return sort(list, Comparator.naturalOrder());
	}

	/**
	 * A pass-through version of {@link List#sort(Comparator)} sorted using
	 * {@link Comparator#naturalOrder()}.
	 *
	 * @return the given list sorted using {@link List#sort(Comparator)} with {@link Comparator#naturalOrder()}.
	 */
	static  List sort(List list, Comparator comparator) {
		list.sort(comparator);
		return list;
	}

	/**
	 * Swap the given items in the given {@link List}.
	 */
	static  void swap(List list, int i, int j) {
		T temp = list.get(i);
		list.set(i, list.get(j));
		list.set(j, temp);
	}

	/**
	 * Reverse the given {@link List} in place.
	 *
	 * @return the given {@link List}, reversed.
	 */
	static  List reverse(List list) {
		for (int i = 0; i < list.size() / 2; i++)
			swap(list, i, list.size() - i - 1);
		return list;
	}

	@SafeVarargs
	static  List create(T... items) {
		return new ArrayList<>(asList(items));
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy