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

  1. 将一组数据固定分组,每组n个元素

  2. 将一组数据平均分成n组

  3. 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一些常用操作的主要内容,如果未能解决你的问题,请参考以下文章

python数据结构list,string,tuple,set,dictionary常用操作

Java8实战list分组过滤统计排序等常用操作

14 list 相关操作

python列表的一些常用方法以及函数

json格式的一些常用操作方法

List接口中的常用方法