解答
三种方法:
1 利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复。
注意,这里采用添加到新列表,而不是在原列表进行remove,主要是会指针变化。
1 2 3 4 5 6 7 8 9 | 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去重
1 2 3 4 5 6 7 8 | 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不能保证添加顺序,所以只能作为判断条件保证顺序
1 2 3 4 5 6 7 8 9 10 11 | 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); } |
大厂面试的时候看重基础,更看重实战项目经验,业务场景使用的具体技术吧
这个问题很常见
想应聘产品经理岗位,不过还没有拿的出手的经历和作品,只做过一些产品运营的工作,都比较浅,只是入了个门,觉得心很虚。