解答
三种方法:
1 利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复。
注意,这里采用添加到新列表,而不是在原列表进行remove,主要是会指针变化。
private static void removeDuplicate(List<String> list) {
List<String> result = new ArrayList<String>(list.size());
for (String str : list) {
if (!result.contains(str)) {
result.add(str);
}
}
list.clear();
list.addAll(result);
2 使用java8新特性stream进行List去重
public static void main(String[] args) {
ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1,1,2,2,5,3,5,4,1,4));
System.out.println(numbersList);
List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
System.out.println(listWithoutDuplicates);
}
3.利用HashSet不能添加重复数据的特性 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序
private static void removeDuplicate(List<String> list) {
HashSet<String> set = new HashSet<String>(list.size());
List<String> result = new ArrayList<String>(list.size());
for (String str : list) {
if (set.add(str)) {
result.add(str);
}
}
list.clear();
list.addAll(result);
}
大厂面试的时候看重基础,更看重实战项目经验,业务场景使用的具体技术吧
这个问题很常见
想应聘产品经理岗位,不过还没有拿的出手的经历和作品,只做过一些产品运营的工作,都比较浅,只是入了个门,觉得心很虚。