替换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;
}
}