See More

package ssj.algorithm; import com.google.common.base.Preconditions; import ssj.algorithm.collections.HashSet; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.Objects; /** * Created by shenshijun on 15/2/1. */ public interface List extends Collection { public T get(int index); public void set(int index, T ele); public void remove(int index); public default void delete(T ele) { Preconditions.checkNotNull(ele); for (Iterator iterator = iterator(); iterator.hasNext(); ) { if (Objects.equals(iterator.next(), ele)) { iterator.remove(); } } } /** * 去除列表中重复的元素 * * @return */ public default int removeDuplicate() { int result = 0; HashSet set = new HashSet<>(100); for (Iterator iterator = iterator(); iterator.hasNext(); ) { if (set.contains(iterator.next())) { iterator.remove(); result++; } } return result; } public default T getReverse(int index) { int normal_index = size() - index - 1; Preconditions.checkPositionIndex(normal_index, size()); return get(normal_index); } List partition(T par_ele, Comparator super T> comparator); public default Set chainEle() { HashSet result = new HashSet<>(); HashMap count_eles = new HashMap<>(); for (T ele : this) { if (count_eles.get(ele) == null) { count_eles.put(ele, 0); } count_eles.put(ele, count_eles.get(ele)); } count_eles.entrySet().stream().filter(count -> count.getValue().compareTo(2) >= 0).forEach(count -> { result.add(count.getKey()); }); return result; } Iterator reverse(); public default boolean isPalindromic() { Iterator default_iterator = iterator(); Iterator reversed_iterator = reverse(); while (default_iterator.hasNext() && reversed_iterator.hasNext()) { if (!default_iterator.next().equals(reversed_iterator.next())) { return false; } } return true; } }