/*
* Copyright (c) 2016 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.util;
import java.util.AbstractList;
import java.util.List;
import java.util.RandomAccess;
public class CollectionUtils {
private CollectionUtils() {}
public static <E> E firstOrNull(List<E> list) {
return !list.isEmpty() ? list.get(0) : null;
}
public static <E> List<E> union(List<E> list1, List<E> list2) {
if (list1 instanceof RandomAccess && list2 instanceof RandomAccess) {
return new RandomAccessUnionList<>(list1, list2);
} else {
return new UnionList<>(list1, list2);
}
}
private static class UnionList<E> extends AbstractList<E> {
private List<E> mList1;
private List<E> mList2;
public UnionList(List<E> list1, List<E> list2) {
mList1 = list1;
mList2 = list2;
}
@Override
public E get(int location) {
int list1Size = mList1.size();
return location < list1Size ? mList1.get(location) : mList2.get(location - list1Size);
}
@Override
public int size() {
return mList1.size() + mList2.size();
}
}
private static class RandomAccessUnionList<E> extends UnionList<E> implements RandomAccess {
public RandomAccessUnionList(List<E> list1, List<E> list2) {
super(list1, list2);
}
}
}