List一些常用操作
Posted 听风者-better
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List一些常用操作相关的知识,希望对你有一定的参考价值。
List一些常用操作
文章参考:
https://blog.csdn.net/hyc123123123123/article/details/80759913
https://blog.csdn.net/a_limingfei/article/details/81559744
-
将一组数据固定分组,每组n个元素
-
将一组数据平均分成n组
-
List自定义排序
package splitlist;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test
/**
* 将一组数据固定分组,每组n个元素
* @param list
* @param num 每组的数量
* @return
*/
public Map<Integer,List<Integer>> splitList(List<Integer> list,Integer num)
Map<Integer,List<Integer>> map = new HashMap<>();
List<Integer> tempList = new ArrayList<>();
for(int i=0;i<list.size();i++)
tempList.add(list.get(i));
if((i+1)%num==0 || (i+1==list.size()))
map.put(i, tempList);
tempList = new ArrayList<>();
return map;
/**
* 将一组数据平均分成n组
* @param list
* @param num
* @return
*/
public Map<Integer,List<Integer>> averageList(List<Integer> list, Integer num)
Map<Integer,List<Integer>> map = new HashMap<>();
int remainder = list.size() % num; //(先计算出余数)
int len = list.size() / num; //然后是商
int offset = 0;//偏移量
for (int i = 0; i < num; i++)
List<Integer> result = new ArrayList<>();
if (remainder > 0)
result = list.subList(i * len + offset, (i + 1) * len + offset + 1);
remainder--;
offset++;
else
result = list.subList(i * len + offset, (i + 1) * len + offset);
map.put(i,result);
return map;
public static void main(String[] args)
Test test = new Test();
int num = 20;
List<Integer> list = new ArrayList<>();
for(int i=0;i<100;i++)
list.add(i);
Map<Integer,List<Integer>> splitMap = test.splitList(list, num);
Map<Integer,List<Integer>> averageMap = test.averageList(list, num);
System.out.println(splitMap.size());
System.out.println(averageMap.size());
//List自定义排序
List<User> users = new ArrayList<User>();
users.add(new User("xm",22));
users.add(new User("xm",21));
users.add(new User("abs",29));
users.add(new User("bssa",20));
users.add(new User("caa",18));
Collections.sort(users, new Comparator<User>()
@Override
public int compare(User o1, User o2)
//compareTo 字符串1的第一个字符跟字符串2的第一个字符不相等,则两个字符串都按照第一个字符的ASCII码顺序进行比较
int i = o1.getName().compareTo(o2.getName());
if(i == 0)
return o1.getAge()-o2.getAge();
return i;
);
for(User u : users)
System.out.println("name:"+ u.getName()+"--"+"age:"+u.getAge());
以上是关于List一些常用操作的主要内容,如果未能解决你的问题,请参考以下文章