自定义list<T>泛型集合排序

本文介绍了一种自定义的菜单排序方法,通过创建一个实用工具类,实现了根据标识列ID对菜单列表进行排序的功能,确保菜单项始终按指定顺序显示,适用于需要稳定菜单顺序的项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做项目遇到菜单栏每次刷新顺序都会发生变化,所以应项目需求,需要给菜单排序【这里最终达到的效果是先来居上(原理都一样)】以下是代码:

在网上查了一下,发现网上提供的方法大部分需要继承,也没有提供单独的方法给list进行排序,于是打算自己写一个util工具类,给list封装一个方法排序(该方法只是适应于一个list类型的可以修改T类型,达到多类排序【不封装完整泛型list排序的原因:我的项目里像这样的排序,只有一个,然后就是,封装完整的需要用到代理对象,比较麻烦,所以这里就不封装了】)

分析,根据数据库标识列id进行排序,或者使用其他标识列进行标识位置

原理:先将id取出放到一个单独的数组里,排好序,然后遍历list集合,比对排好序的id和集合里的id是否相等一次将集合中的对象放入新建的list集合中,最终得到集合与数组的顺序是一致的,如下是代码:

package com.wqk.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.wqk.entity.TbMenu;

public class ListSort {
	//根据传递集合的id进行排序,这里只是真对该项目菜单进行排序,其他,原理相同
	public static List<TbMenu> SortList(List<TbMenu> T)
	{
		List<TbMenu> lt=new ArrayList<TbMenu>();
		//先将id取出以数组保存
		int [] idzu=new int[T.size()];
		for (int i=0;i<T.size();i++) {
			idzu[i]=T.get(i).getId();
		}
		//将数组排序
		 Arrays.sort(idzu);
		 //开始排序
		 for (int i : idzu) {
			for (TbMenu tm : T) {
				if(i==tm.getId())
				{
					lt.add(tm);
				}
			}
		}
		 //排序结束
		 
		return lt;
	}

}

开始想使用冒泡排序的,结果想了下还是 Arrays.sort(arr);更好用
希望有所帮助:新年快乐!!!
=========================================补充
今天又再次用到list排序问题:于是重新写了一下排序这次使用了泛型,是泛泛的那种,看代码:

/**
	 * 排序:根据rid查询的菜单
	 * T:传递的泛型list里面的map集合相当于对象,
	 * sortname:为排序的字符key(该类将跟剧key进行排序)
	 * 前提保证sortname为int或Integer类型的Object获取值接类型
	 */
	
	public static List<Map<String, Object>> SortListMap(List<Map<String, Object>> T,String sortname)
	{
		List<Map<String, Object>> lt=new ArrayList<Map<String, Object>>();
		//先将id取出以数组保存
		int [] idzu=new int[T.size()];
		for (int i=0;i<T.size();i++) {
			idzu[i]=Integer.parseInt(String.valueOf(T.get(i).get(sortname)));
		}
		//将数组排序
		 Arrays.sort(idzu);
		 //开始排序
		 for (int i : idzu) {
			for (Map<String, Object> tm : T) {
				if(i==Integer.parseInt(String.valueOf(tm.get(sortname))))
				{
					lt.add(tm);
				}
			}
		}
		 //排序结束
		 
		return lt;
	}

调用代码:

List<Map<String, Object>> lmso=new ArrayList<Map<String, Object>>();
		//利用排序类将该list集合排序至“先来居上”
		ListSort.SortListMap(lmso, "id");

浏览到这里的朋友,不妨浏览一下该网站:原创地址:https://www.applebai.com/blog/details/39/20203281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值