以泛型实现把集合按照n个一组进行平分
2017-09-15 00:00
281 查看
摘要: google有一个工具类已经实现了,但是闲暇时自己就模仿的造了一个,或许你的项目以后也会用到。
要求: 给一组大集合,按照每2个一组进行平分
下面是一组数据:
要完成后的效果:
[[9, 6], [2, 24], [1, 3], [5, 7], [8, 4], [11]]
其实google的Guava工具包中com.google.common.collect这个工具类已经实现了这个功能,但是出于锻炼思维能力自己就在写一个。
1.先把goole的用法展示出来:
Iterable<List<Integer>> partition = Iterables.partition(list1, 2);
System.out.println("GooglesubList=="+partition);
用法很简单,只需要传入对应的集合和按照几个一组的个数就可以返回对应的结果。
2.下面是我自己写的一个工具类,可能时间效率和google大神们没法比,但是也是锻炼自己思维的一种方式吧,传入的参数和google的用法一样。
要求: 给一组大集合,按照每2个一组进行平分
下面是一组数据:
List<Integer> list1 = new ArrayList<>(); list1.add(9); list1.add(6); list1.add(2); list1.add(24); list1.add(1); list1.add(3); list1.add(5); list1.add(7); list1.add(8); list1.add(4); list1.add(11);
要完成后的效果:
[[9, 6], [2, 24], [1, 3], [5, 7], [8, 4], [11]]
其实google的Guava工具包中com.google.common.collect这个工具类已经实现了这个功能,但是出于锻炼思维能力自己就在写一个。
1.先把goole的用法展示出来:
Iterable<List<Integer>> partition = Iterables.partition(list1, 2);
System.out.println("GooglesubList=="+partition);
用法很简单,只需要传入对应的集合和按照几个一组的个数就可以返回对应的结果。
2.下面是我自己写的一个工具类,可能时间效率和google大神们没法比,但是也是锻炼自己思维的一种方式吧,传入的参数和google的用法一样。
//实现n等份平分集合 public static <T> List<List<T>> averageAssign(List<T> source, int size) { List<List<T>> resultList = new ArrayList<>(); while (true){ if (source.size() > size) { List<T> subList = source.subList(0, size); resultList = resultList(resultList, source, subList); source.removeAll(subList); }else{ List<T> subList = source.subList(0, source.size()); resultList = resultList(resultList, source, subList); break; } } return resultList; } //抽取公共类 @SuppressWarnings("unchecked") private static <T> List<List<T>> resultList(List<List<T>> resultList, List<T> source, List<T> subList) { Object[] array = new Object[subList.size()]; for (int i = 0; i < subList.size(); i++) { array[i] = subList.get(i); } List<T> asList = (List<T>) Arrays.asList(array); resultList.add((List<T>) asList); return resultList; }
相关文章推荐
- collections 接口存储一组不唯一,无序的对象。提供了对集合进行排序,遍历等对种算法的实现
- 我自己编写的实现的对一些列数字的索引进行排序的类 (注意:不是对数字集合进行排序,而是对数字集合的索引按照数字值进行排序)
- IOS开发中实现UITableView按照首字母将集合进行检索分组
- ti-idf算法,实现对英文文档的检索,把多篇文档中的词(英文单词),按照权值从小到大进行排列
- Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
- 对excel里一列5000行数据进行以50行为一组进行分组的实现方法
- 如何实现自己的泛型集合和Foreacch原理
- 问大家 ArrayList 是按照输入顺序显示的么,如果不是,哪种集合可以实现
- 用泛型List实现集合类及排序功能
- 用反射技术实现将泛型集合类中的数据导出成EXCEL
- 利用rabbit_mq队列消息实现对一组主机进行命令下发
- Python实现字典按照value进行排序的方法分析
- Map集合按照value和key进行排序
- C# Synchronized 和 SyncRoot 实现线程同步的源码分析及泛型集合的线程安全访问
- 定义一个List集合并实例化对应的实现类对象。循环输入任意个整数,输入0结束输入循环,对集合中的数据进行从大到小的排序后输出
- 2、利用反射技术得到泛型类型,实现对实体添删改查操作进行代码重用设计
- List集合中的对象按照某个字段去重实现
- PHP读取数据库并按照中文名称进行排序实现代码
- 使用了泛型的集合 进行存储 、遍历
- STM32的库如何实现对同一组IO口的一部分引脚进行读写