java排序的例子_Java之真实项目中的章节排序实例

本文介绍了Java在真实项目中如何进行章节排序的问题,通过将章节号转化为Map,然后进行处理,包括补零、排序等步骤,最终实现章节的正确排序。提供了完整的代码示例作为参考。
摘要由CSDN通过智能技术生成

提出问题

真实项目中,章节如何排序???

解决问题

下面是真实项目中的一个章节排序问题,希望以后碰到该问题的程序员,可以提供一个参考,希望刚刚开始学编程的同学,可以当作一个练习的例子等等。图片是思路,代码是实现。

ff22e6d4e71ad4c428cc465abe14d13e.png[code]package com.hwy.test;

import java.util.*;

/**

* 章节排序

* Created by Ay on 2016/7/9.

*/

public class ChapterSortTest {

public static void main(String[] args) {

/** 从数据库加载数据 **/

List chapterList = getDataFromDB();

/** 章节list转化为map **/

Map chapterMap = listChangeToMap(chapterList);

/** 获得章节号 **/

List chapterNum = getChapterNum(chapterMap);

/** 章节号去除点 **/

Map chapterNumNoDot = removeDot(chapterNum);

/** 获取数字最大长度 **/

int maxLength = getChapterNumMaxLength(chapterNumNoDot.keySet());

/** 获取补0后的列表 **/

List fillZeroChapterNum = fillZero(maxLength,chapterNumNoDot);

/** 排序 默认是升序,刚好是我们需要的**/

Collections.sort(fillZeroChapterNum);

/** 重组map对象**/

List sortChapterList = getSortChapterMap(fillZeroChapterNum,chapterMap,chapterNumNoDot);

/** 打印信息 **/

if(sortChapterList != null){

for(String key:sortChapterList){

System.out.println(key);

}

}

}

/**

* 获得排序后的map

* @param fillZeroChapterNum

* @param chapterMap

* @return

*/

public static List getSortChapterMap(List fillZeroChapterNum,Map chapterMap,Map chapterNotDot){

if(null == fillZeroChapterNum || fillZeroChapterNum.size() == 0) return null;

if(null == chapterMap) return null;

List sortChapterList = new ArrayList<>();

for(String temp:fillZeroChapterNum){

sortChapterList.add(chapterNotDot.get(Integer.parseInt(temp.replace("0", ""))) + " " + chapterMap.get(chapterNotDot.get(Integer.parseInt(temp.replace("0", "")))));

}

return sortChapterList;

}

/**

* 补零操作

* @return

*/

public static List fillZero(int maxLength,Map chapterNumNoDot){

if(null == chapterNumNoDot || chapterNumNoDot.size() ==0) return null;

List fillZeroList = new ArrayList<>();

for(Integer key:chapterNumNoDot.keySet()){

fillZeroList.add(key + getNeedZero(maxLength - (key + "").length()));

}

return fillZeroList;

}

/**

* 获得需要0的个数

* @param num

* @return

*/

public static String getNeedZero(int num){

if(num <1) return "";

StringBuffer sb = new StringBuffer();

/** 拼凑需要的0 **/

for(int i=0;i

sb.append("0");

}

return sb.toString();

}

/**

* 返回数组最大值

* @param a

* @return

*/

public static int max(int[] a){

// 返回数组最大值

int x;

int aa[]=new int[a.length];

System.arraycopy(a,0,aa,0,a.length);

x=aa[0];

for(int i=1;i

if(aa[i]>x){

x=aa[i];

}

}

return x;

}

/**

* 获得章节号最大长度

* @param chapterNumNoDot

* @return

*/

public static int getChapterNumMaxLength(Set chapterNumNoDot){

if(null == chapterNumNoDot || chapterNumNoDot.size() == 0) return 0;

Object[] chapterNumArr = chapterNumNoDot.toArray();

int[] chapterNum = new int[chapterNumArr.length];

for(int i=0;i

chapterNum[i] = chapterNumArr[i].toString().length();

}

return max(chapterNum);

}

/**

* 去除章节号中的点

* @param chapterNumList

* @return

*/

public static Map removeDot(List chapterNumList){

if(null == chapterNumList || chapterNumList.size() == 0) return null;

Map rmDotChapterNumMap = new HashMap<>();

for(int i=0;i

/** 把点替换成空 **/

rmDotChapterNumMap.put(Integer.parseInt(chapterNumList.get(i).replace(".","")),chapterNumList.get(i));

}

return rmDotChapterNumMap;

}

/**

* 获取章节号

* @param chapterMap

* @return

*/

public static List getChapterNum(Map chapterMap){

if(null == chapterMap) return null;

List chapterNumList = new ArrayList<>();

for(String chapterNum:chapterMap.keySet()){

chapterNumList.add(chapterNum);

}

return chapterNumList;

}

/**

* 把list转变为map

* @param chapterList

* @return

*/

public static Map listChangeToMap(List chapterList){

/** 存到map中 **/

Map chapterMap = new HashMap<>();

if(null == chapterList || chapterList.size() == 0) return null;

for(String chapter:chapterList){

chapterMap.put(chapter.split(" ")[0], chapter.split(" ")[1]);

}

return chapterMap;

}

/**

* 从数据库获取数据

* @return

*/

public static List getDataFromDB(){

List chapterList = new ArrayList<>();

chapterList.add("1.3.1 华丽新设计");

chapterList.add("1.4 思想流派");

chapterList.add("3.1 短小");

chapterList.add("3.2 只做一件事");

chapterList.add("2.11 别伴可爱");

chapterList.add("4.4.12 注释掉的代码");

chapterList.add("1.1 要有代码");

chapterList.add("2.1 介绍");

chapterList.add("8.5 使用尚不存在的代码");

chapterList.add("5.3.1 水平方向上的区隔与靠近");

return chapterList;

}

}

以上就是Java之真实项目中的章节排序实例的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值