將list集合中按照某個欄位排序(從大到小),然後將list中的物件倒序
阿新 • • 發佈:2018-12-11
需求:
查詢資料庫的到多條據,將每一行資料相加求和,得到sum,在jsp中跟據sum總和排序。
首先,我是用Page<Analysis> page 去接受返回值,在controller層進行資料處理。List<Analysis> list = page.getList();得到要處理的資料集合。
我的思路是先將lsit中的物件排序(得到從小到大的排序),然後將list中的物件倒序.(如有·其他方案請在評論區展現)
附上自己的程式碼:
package com.wolfking.jeesite.manger.statistics.web; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.wolfking.jeesite.common.persistence.Page; import com.wolfking.jeesite.common.web.BaseController; import com.wolfking.jeesite.manger.meeting.service.MeetingService; import com.wolfking.jeesite.manger.statistics.entity.Analysis; import com.wolfking.jeesite.manger.statistics.service.AnalysisService; import com.wolfking.jeesite.manger.statistics.service.RankingService; import com.wolfking.jeesite.modules.sys.service.SystemService; /** * @author 20530 *統計排名 */ @Controller @RequestMapping(value = "${adminPath}/statistical/ranking") public class RankingController extends BaseController{ @Autowired private MeetingService meetingService; @Autowired private SystemService systemService; @Autowired private RankingService rankingService; @RequiresPermissions("statistical:analysis:view") @RequestMapping(value = {"list", ""}) public String list(Analysis analysis, HttpServletRequest request, HttpServletResponse response, Model model) { analysis.setPassStatus(1); analysis.setCompanyId("1"); Page<Analysis> page = rankingService.findPageExeam(new Page<Analysis>(request, response),analysis); List<Analysis> list = page.getList(); if(!list.isEmpty()){ int size = list.size(); int i = 0; for (Analysis analysis2 : list) { if(i>size){ break; } Integer sum = analysis2.getPartyBigMeeting()+analysis2.getEbranch()+ analysis2.getPartyGroup()+analysis2.getPartyLecture()+analysis2.getOther(); page.getList().get(i).setSum(sum); i++; } } sortIntMethod(page.getList()); Collections.reverse(page.getList()); model.addAttribute("page", page); return "manger/statistical/ranking"; } /** * 按照List中的某個Int型別的屬性進行排序 * @param list */ @SuppressWarnings("unchecked") public static void sortIntMethod(List list){ Collections.sort(list, new Comparator(){ @Override public int compare(Object o1, Object o2) { Analysis stu1=(Analysis)o1; Analysis stu2=(Analysis)o2; if(stu1.getSum()>stu2.getSum()){ return 1; }else if(stu1.getSum()==stu2.getSum()){ return 0; }else{ return -1; } } }); } }
參考:
https://blog.csdn.net/sdzhangshulong/article/details/52191454
暫存一部分待用
/** * 按照List中的某個String型別的屬性進行排序 * @param list */ @SuppressWarnings("unchecked") public static void sortStringMethod(List list){ Collections.sort(list, new Comparator(){ @Override public int compare(Object o1, Object o2) { Student stu1=(Student)o1; Student stu2=(Student)o2; return stu1.getName().compareTo(stu2.getName()); } }); System.out.println("/////////////排序之後///////////////"); for(int i=0;i<list.size();i++){ Student st=(Student)list.get(i); System.out.println("st.age="+st.getAge()+",st.name="+st.getName()); } } /** * 使用java.text.RuleBasedCollator來實現,用來執行區分語言環境的String 比較: * 按照List中的某個String型別的屬性進行排序 * @param list */ @SuppressWarnings("unchecked") public static void sortByRuleBasedCollator(List list){ Collections.sort(list, new Comparator(){ @Override public int compare(Object o1, Object o2) { return ((java.text.RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA)).compare(((Student)o1).getName(), ((Student)o2).getName()); } }); System.out.println("/////////////排序之後///////////////"); for(int i=0;i<list.size();i++){ Student st=(Student)list.get(i); System.out.println("st.age="+st.getAge()+",st.name="+st.getName()); } }
我的執行結果:
cv大法不可怕,可怕的是不會cv大法。