替换Java列表List中重复元素为一个元素

上页

  如果一个列表List中包含重复的元素,它们应该用单个元素替换,而且元素的顺序不应该改变。

 
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
 
/**
 * <b>(**) Eliminate consecutive duplicates of list elements</b>
 * <p>If a list contains repeated elements they should be replaced with a single copy of the element.
 * The order of the elements should not be changed.</p>
 * <p>
 * <pre>
 *     compress(Arrays.asList(a,a,a,a,b,c,c,a,a,d,e,e,e,e))
 *     [a,b,c,d,e]
 * </pre>
 */
public class P08 {
 
    public static <T> List<T> compress(List<T> list) {
        Objects.requireNonNull(list, "Please make sure list is not null");
        List<T> result = new ArrayList<>();
        T lastElement = null;
        for (T e : list) {
            if (!Objects.equals(lastElement, e)) {
                result.add(e);
            }
            lastElement = e;
        }
        return result;
    }
 
}

 

下一篇:Java列表List中连续重复元素放入一个子列表