| import java.util.ArrayList; |
| import java.util.HashSet; |
| import java.util.List; |
| import java.util.Set; |
| |
| public class ForEach { |
| void m1() { |
| Set<? extends CharSequence> s = new HashSet<CharSequence>(); |
| for (CharSequence cs : s) { |
| cs.toString(); |
| } |
| } |
| |
| void m2() { |
| Set<CharSequence> s = new HashSet<>(); |
| for (CharSequence cs : s) { |
| cs.toString(); |
| } |
| } |
| |
| <T extends Object> void m3(T p) { |
| Set<T> s = new HashSet<>(); |
| for (T cs : s) { |
| cs.toString(); |
| } |
| } |
| |
| <T extends Object> void m4(T p) { |
| Set<T> s = new HashSet<>(); |
| for (Object cs : s) { |
| cs.toString(); |
| } |
| } |
| |
| public static <T extends Object> List<T> removeDuplicates(List<T> l) { |
| // There are shorter solutions that do not maintain order. |
| HashSet<T> hs = new HashSet<>(l.size()); |
| List<T> result = new ArrayList<>(); |
| for (T t : l) { |
| if (hs.add(t)) { |
| result.add(t); |
| } |
| } |
| return result; |
| } |
| } |