????/**使用两个for循环实现List去重(有序)
?????*
?????*?@param?list
?????*?*/
????public?static?List?removeDuplicationBy2For(List<Integer>?list)?{
????????for?(int?i=0;i<list.size();i++)
????????{
????????????for?(int?j=i+1;j<list.size();j++)
????????????{
????????????????if(list.get(i).equals(list.get(j))){
????????????????????list.remove(j);
????????????????}
????????????}
????????}
????????return?list;
????}
????/**使用List集合contains方法循环遍历(有序)
?????*
?????*?@param?list
?????*?*/
????public?static?List?removeDuplicationByContains(List<Integer>?list)?{
????????List<Integer>?newList?=new?ArrayList<>();
????????for?(int?i=0;i<list.size();i++)
????????{
????????????boolean?isContains?=newList.contains(list.get(i));
????????????if(!isContains){
????????????????newList.add(list.get(i));
????????????}
????????}
????????list.clear();
????????list.addAll(newList);
????????return?list;
????}
????/**使用HashSet实现List去重(无序)
?????*
?????*?@param?list
?????*?*/
????public?static?List?removeDuplicationByHashSet(List<Integer>?list)?{
????????HashSet?set?=?new?HashSet(list);
????????//把List集合所有元素清空
????????list.clear();
????????//把HashSet对象添加至List集合
????????list.addAll(set);
????????return?list;
????}
????/**使用TreeSet实现List去重(有序)
?????*
?????*?@param?list
?????*?*/
????public?static?List?removeDuplicationByTreeSet(List<Integer>?list)?{
????????TreeSet?set?=?new?TreeSet(list);
????????//把List集合所有元素清空
????????list.clear();
????????//把HashSet对象添加至List集合
????????list.addAll(set);
????????return?list;
????}
????/**使用java8新特性stream实现List去重(有序)
?????*
?????*?@param?list
?????*?*/
????public?static?List?removeDuplicationByStream(List<Integer>?list)?{
????????List?newList?=?list.stream().distinct().collect(Collectors.toList());
????????return?newList;
????}
????public?static?void?main(String?args[])?{
????????List<Integer>?list1?=?new?ArrayList<>();
????????List<Integer>?list2?=?new?ArrayList<>();
????????List<Integer>?list3?=?new?ArrayList<>();
????????List<Integer>?list4?=?new?ArrayList<>();
????????List<Integer>?list5?=?new?ArrayList<>();
????????Random?random?=new?Random();
????????for?(int?i?=?0;?i?<?100000;?i++)?{
????????????int?value?=random.nextInt(500);
????????????list1.add(value);
????????????list2.add(value);
????????????list3.add(value);
????????????list4.add(value);
????????????list5.add(value);
????????}
????????long?startTime?;
????????long?endTime;
????????startTime?=?System.currentTimeMillis();
????????removeDuplicationByHashSet(list1);
????????endTime?=?System.currentTimeMillis();
????????System.out.println("使用HashSet实现List去重时间:"+(endTime-startTime)+"毫秒");
????????startTime?=?System.currentTimeMillis();
????????removeDuplicationByTreeSet(list2);
????????endTime?=?System.currentTimeMillis();
????????System.out.println("使用TreeSet实现List去重时间:"+(endTime-startTime)+"毫秒");
????????startTime?=?System.currentTimeMillis();
????????removeDuplicationByStream(list3);
????????endTime?=?System.currentTimeMillis();
????????System.out.println("使用java8新特性stream实现List去重:"+(endTime-startTime)+"毫秒");
????????startTime?=?System.currentTimeMillis();
????????removeDuplicationBy2For(list4);
????????endTime?=?System.currentTimeMillis();
????????System.out.println("使用两个for循环实现List去重:"+(endTime-startTime)+"毫秒");
????????startTime?=?System.currentTimeMillis();
????????removeDuplicationByContains(list5);
????????endTime?=?System.currentTimeMillis();
????????System.out.println("使用List集合contains方法循环遍历:"+(endTime-startTime)+"毫秒");
????}
结果:
更多测试结果
随机数在100范围内:
随机数在1000范围内:
随机数在10000范围内:
无序HashSet,有序TreeSet
Java 的知识面非常广,面试问的涉及也非常广泛,重点包括:Java 基础、Java 并发,JVM、MySQL、数据结构、算法、Spring、微服务、MQ 等等,涉及的知识点何其庞大,所以我们在复习的时候也往往无从下手,今天小编给大家带来一套 Java 面试题,题库非常全面,包括 Java 基础、Java 集合、JVM、Java 并发、Spring全家桶、Redis、MySQL、Dubbo、Netty、MQ 等等,包含 Java 后端知识点 2000 +
资料获取方式:关注公众号:“程序员白楠楠”获取上述资料
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。