listcontains⽅法_Java中给List去重的5种⽅法,谁的效率更
⾼?
刚开始学习list的时候就学习了在list集合中如何去除重复数据,当时第⼀想到的就是通过循环判断来去除重复数据,后来慢慢接触的东西多
了,就开始注重⼀个效率,当数据量巨⼤的时候,怎么样才能查的更快,怎样的代码会更好。
接下来总结list中去重的⼏个⽅法
1、使⽤双重for循环实现List去重
/**使⽤双重for循环实现List去重(有序) * * @param list * */ public static List removeDuplicationBy2For(Listlist) { for (int i=0;i<list.size();i++) {
2、使⽤List集合中contains⽅法循环遍历
/**使⽤List集合contains⽅法循环遍历(有序) * * @param list * */ public static List removeDuplicat
ionByContains(Listlist) { List newList =new ArrayLis 3、使⽤HashSet实现List去重
/**使⽤HashSet实现List去重(⽆序) * * @param list * */ public static List removeDuplicationByHashSet(Listlist) { HashSet set = new HashSet(list);
4、使⽤TreeSet实现List去重
/**使⽤TreeSet实现List去重(有序) * * @param list * */ public static List removeDuplicationByTreeSet(Listlist) { TreeSet set = new TreeSet(list);
5、使⽤java8新特性stream流实现List去重
/**使⽤java8新特性stream实现List去重(有序) * * @param list * */ public static List removeDuplicationByStream(Listlist) { List newList = list.stream()测试各个⽅法效率
随机取100000个500以内的数字存⼊5个集合,分别调⽤5个⽅法进⾏测试,计算去除重复值所需的时间
public class Demo { public static void main(String[] args) { List list1 = new ArrayList<>(); List list2 = new ArrayList<>(); List list3 = new ArrayL 结果1:
java stream使⽤HashSet实现List去重时间:14毫秒使⽤TreeSet实现List去重时间:20毫秒使⽤java8新特性stream实现List去重:52毫秒使⽤双重for
循环实现List去重:355毫秒使⽤List集合contains⽅法循环遍历:27毫秒
结果2:
使⽤HashSet实现List去重时间:21毫秒使⽤TreeSet实现List去重时间:24毫秒使⽤java8新特性stream实现List去重:67毫秒使⽤ 双重for
循环实现List去重:401毫秒使⽤List集合contains⽅法循环遍历:37毫秒
结果3:
使⽤HashSet实现List去重时间:16毫秒使⽤TreeSet实现List去重时间:72毫秒使⽤java8新特性stream实现List去重:62毫秒使⽤ 双重for
循环实现List去重:350毫秒使⽤List集合contains⽅法循环遍历:33毫秒 如果没有要求有序排列的时候,使⽤HashSet处理最好
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论