中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

錫盟建設(shè)工程造價(jià)管理站網(wǎng)站凡科建站怎么建網(wǎng)站

錫盟建設(shè)工程造價(jià)管理站網(wǎng)站,凡科建站怎么建網(wǎng)站,帝國(guó)cms轉(zhuǎn)換wordpress,網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn)錢(qián)一、前言 在Java開(kāi)發(fā)中,若單次展示的數(shù)據(jù)量太大,會(huì)造成程序響應(yīng)緩慢,就需要用到 分頁(yè) 功能,每一頁(yè)展示一定量的數(shù)據(jù),分多次展示 ... 那么在List集合中,如何實(shí)現(xiàn) 分頁(yè) 功能呢? 本文將以3種方式&a…

一、前言

? ? ? ? 在Java開(kāi)發(fā)中,若單次展示的數(shù)據(jù)量太大,會(huì)造成程序響應(yīng)緩慢,就需要用到 分頁(yè) 功能,每一頁(yè)展示一定量的數(shù)據(jù),分多次展示 ... 那么在List集合中,如何實(shí)現(xiàn) 分頁(yè) 功能呢?

? ? ? ? 本文將以3種方式,分別是: subList 方法、Java8 Stream 、Lists.partition,實(shí)現(xiàn) List集合的分頁(yè)功能。

二、代碼實(shí)現(xiàn)

? ? ? ? 1、假設(shè)有一個(gè) list集合,元素如下:

ArrayList<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

2、使用 subList 實(shí)現(xiàn)分頁(yè):

/**@Description: subList 分頁(yè)* <br> 1. 起始位置邊界值處理: 當(dāng)前頁(yè)碼 <= 0 情況處理; 當(dāng)前頁(yè)碼 > 最大頁(yè)碼 情況處理* <br> 2. 終止位置邊界值處理: 當(dāng)前頁(yè)碼 <= 0 情況處理; 終止位置 <= 總記錄數(shù)  情況處理* @param pageSize 每頁(yè)顯示的數(shù)量* @param pageNum  當(dāng)前頁(yè)碼* @version v1.0* @author wu* @date 2022/7/31 11:44*/
private List<?> subList(ArrayList<?> list, int pageSize, int pageNum) {int count = list.size(); // 總記錄數(shù)// 計(jì)算總頁(yè)數(shù)int pages = count % pageSize == 0 ? count / pageSize : count / pageSize + 1;// 起始位置int start = pageNum <= 0 ? 0 : (pageNum > pages ? (pages - 1) * pageSize : (pageNum - 1) * pageSize);// 終止位置int end = pageNum <= 0 ? (pageSize <= count ? pageSize : count) : (pageSize * pageNum <= count ? pageSize * pageNum : count);return list.subList(start, end);
}

3、Java8 Stream 分頁(yè)

/**@Description: Java8 Stream 分頁(yè)* <br> 1. 起始位置邊界值處理: 同 subList 方法* <br> 2. 終止位置:無(wú)需處理,會(huì)自動(dòng)處理邊界問(wèn)題*  @param pageSize 每頁(yè)顯示的數(shù)量*  @param pageNum  當(dāng)前頁(yè)碼* @version v1.0* @author wu* @date 2022/7/31 11:49*/
private List<?> subListJava8(ArrayList<?> list, int pageSize, int pageNum) {int count = list.size(); // 總記錄數(shù)// 計(jì)算總頁(yè)數(shù)int pages = count % pageSize == 0 ? count / pageSize : count / pageSize + 1;// 起始位置int start = pageNum <= 0 ? 0 : (pageNum > pages ? (pages - 1) * pageSize : (pageNum - 1) * pageSize);// 終止位置int end = pageSize ;return list.stream().skip(start).limit(pageSize).collect(Collectors.toList());
}

??4、使用 Lists 工具類的 partition 分頁(yè)

/**@Description: 使用 Lists 工具類的 partition 分頁(yè)* <br> 1. 頁(yè)碼邊界值處理:小于等于0,情況處理; 頁(yè)碼大于 (總頁(yè)數(shù)-1) 情況處理* <br> 2. 總頁(yè)數(shù)-1 ,原因是:list集合索引是從0開(kāi)始的。*  @param pageSize 每頁(yè)顯示的數(shù)量*  @param pageNum  當(dāng)前頁(yè)碼* @version v1.0* @author wu* @date 2022/7/31 11:55* @see com.google.common.collect.Lists#partition(java.util.List, int)*/
private List<?> partition(ArrayList<?> list, int pageSize, int pageNum) {// 將 List 按照 PageSzie 拆分成多個(gè)ListList<? extends List<?>> partition = Lists.partition(list, pageSize);// 總頁(yè)數(shù)int pages = partition.size();pageNum = pageNum <= 0 ? 0 : (pageNum <= (pages - 1) ? pageNum : (pages - 1));return partition.get(pageNum);
}

三、測(cè)試

????????1、使用List的 subList 方法實(shí)現(xiàn)分頁(yè) 測(cè)試:

/*** @Description: 使用List的 subList 方法實(shí)現(xiàn)分頁(yè)* @version v1.0* @author wu* @date 2022/7/31 10:43*/
@Test
public void subListTest() {int pageSize = 3; // 每一頁(yè)顯示的數(shù)量int pageNum = 2; // 頁(yè)碼System.out.println(subList(list, pageSize, -2));System.out.println(subList(list, pageSize, 0));System.out.println(subList(list, pageSize, 1));// 第一頁(yè)System.out.println(subList(list, pageSize, 2));System.out.println(subList(list, pageSize, 3));System.out.println(subList(list, pageSize, 4)); // 第四頁(yè)數(shù)據(jù)System.out.println(subList(list, pageSize, 5)); // 第五頁(yè)數(shù)據(jù)
}

???2、使用 Java8 Stream 實(shí)現(xiàn)分頁(yè) 測(cè)試:

/**@Description: 使用 Java8 Stream 實(shí)現(xiàn)分頁(yè)* @version v1.0* @author wu* @date 2022/7/31 11:44*/
@Test
public void subListJava8Test() {int pageSize = 3; // 每一頁(yè)顯示的數(shù)量int pageNum = 2; // 頁(yè)碼System.out.println(subListJava8(list, pageSize, -2));System.out.println(subListJava8(list, pageSize, 0));System.out.println(subListJava8(list, pageSize, 1));// 第一頁(yè)System.out.println(subListJava8(list, pageSize, 2));System.out.println(subListJava8(list, pageSize, 3));System.out.println(subListJava8(list, pageSize, 4)); // 第四頁(yè)數(shù)據(jù)System.out.println(subListJava8(list, pageSize, 5)); // 第四頁(yè)數(shù)據(jù)
}

3、Lists 工具類的 partition 分頁(yè) 測(cè)試:

@Test
public void partitionTest() {int pageSize = 3; // 每一頁(yè)顯示的數(shù)量int pageNum = 2; // 頁(yè)碼System.out.println(partition(list, pageSize, -2));System.out.println(partition(list, pageSize, 0));System.out.println(partition(list, pageSize, 1));// 第一頁(yè)System.out.println(partition(list, pageSize, 2));System.out.println(partition(list, pageSize, 3));System.out.println(partition(list, pageSize, 4)); // 第四頁(yè)數(shù)據(jù)System.out.println(partition(list, pageSize, 5)); // 第五頁(yè)數(shù)據(jù)System.out.println(partition(list, pageSize, 6)); // 第六頁(yè)數(shù)據(jù)
}

四、總結(jié)

? ? ? ? 1、以上是List集合實(shí)現(xiàn)分頁(yè)的3種方式,在實(shí)際工作應(yīng)用中,一般很少,都是在數(shù)據(jù)中實(shí)現(xiàn)好的分頁(yè),偶爾遇到實(shí)際要使用時(shí),翻開(kāi)文章,可以做到 “開(kāi)箱即用”!

? ? ? ? 2、注意點(diǎn):本文分頁(yè)案例中,都已經(jīng)對(duì) 極端情況(邊界值)處理,可以有效避免索引越界的情況,如下:
? ? ? 開(kāi)始位置: 當(dāng)前頁(yè)碼值 <= 0 , 取值 第一頁(yè) ; 當(dāng)前頁(yè)碼 > 總頁(yè)數(shù) , 取值 總頁(yè)數(shù)
? ? ? 結(jié)束位置:當(dāng)前頁(yè)碼值 <= 0 ,則判斷 每頁(yè)顯示數(shù)據(jù) 是否小于總記錄數(shù) ( pageSize <= count? ? ? ?? pageSize : count ); 當(dāng)前頁(yè)碼 > 0 , 則判斷 結(jié)束數(shù)量 是否小于等于 總記錄數(shù) ( pageSize? ? ? ?*??pageNum <= count ? pageSize * pageNum : count )
3、Lists 工具類,依賴 pom.xml :

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.0-jre</version>
</dependency>

4、補(bǔ)充一個(gè) List 集合創(chuàng)建 笛卡爾積的方法:

List<List<Integer>> lists = Lists.cartesianProduct(list1, list2);

http://www.risenshineclean.com/news/50529.html

相關(guān)文章:

  • 邢臺(tái)太行中學(xué)地址seo入門(mén)教程視頻
  • 濟(jì)南公司做網(wǎng)站貴州網(wǎng)站seo
  • 網(wǎng)站建設(shè)運(yùn)營(yíng)怎么辦seo網(wǎng)絡(luò)營(yíng)銷推廣公司深圳
  • 學(xué)做電商網(wǎng)站設(shè)計(jì)app開(kāi)發(fā)公司推薦
  • 陜西咸陽(yáng)建設(shè)銀行網(wǎng)站百度域名提交收錄網(wǎng)址
  • wordpress 顯示瀏覽量為什么seo工資不高
  • 如何在自己網(wǎng)站上做支付寶公司做網(wǎng)站推廣
  • 做網(wǎng)站的屬于什么工作類型女教師遭網(wǎng)課入侵直播錄屏曝光視頻
  • wordpress去水印北京seo公司華網(wǎng)白帽
  • 鞏義企業(yè)網(wǎng)站托管服務(wù)商百度分析工具
  • 企業(yè)網(wǎng)站建設(shè)上海seo搜索引擎優(yōu)化方案
  • 深圳外貿(mào)網(wǎng)站優(yōu)化黃金網(wǎng)站app大全
  • django 網(wǎng)站開(kāi)發(fā)視頻教程軟件開(kāi)發(fā)網(wǎng)
  • 四川設(shè)計(jì)公司seo運(yùn)營(yíng)培訓(xùn)
  • 網(wǎng)站收錄了但是搜索不到軟文寫(xiě)作
  • 臨平做網(wǎng)站鄭州seo顧問(wèn)阿亮
  • 鄭州做網(wǎng)站云極品牌推廣公司
  • 軟件開(kāi)發(fā)步驟及周期長(zhǎng)沙優(yōu)化網(wǎng)站廠家
  • 韓國(guó)購(gòu)物網(wǎng)站廣告素材
  • 宿州商務(wù)網(wǎng)站建設(shè)網(wǎng)站關(guān)鍵詞優(yōu)化有用嗎
  • java畢業(yè)設(shè)計(jì)網(wǎng)站建設(shè)培訓(xùn)網(wǎng)址大全
  • 公司建站比較好的金華網(wǎng)站建設(shè)
  • 專門(mén)做車評(píng)的網(wǎng)站電商網(wǎng)站建設(shè)價(jià)格
  • 網(wǎng)站內(nèi)容建設(shè)的原則是什么意思百度的企業(yè)網(wǎng)站
  • 上海企業(yè)建設(shè)網(wǎng)站成人職業(yè)技術(shù)培訓(xùn)學(xué)校
  • 個(gè)人網(wǎng)頁(yè)設(shè)計(jì)大全廈門(mén)seo排名優(yōu)化
  • 長(zhǎng)治網(wǎng)站建設(shè)收費(fèi)多少2022最好的百度seo
  • 上海百度地圖百度快速seo軟件
  • 網(wǎng)站建設(shè)優(yōu)化文章重慶今日頭條新聞消息
  • 石家莊免費(fèi)做網(wǎng)站杭州seo公司