最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)的數(shù)組去重與排序操作詳解

 更新時(shí)間:2018年07月10日 09:42:23   作者:萌萌的晨子  
這篇文章主要介紹了Java實(shí)現(xiàn)的數(shù)組去重與排序操作,結(jié)合實(shí)例形式分析了Java針對(duì)數(shù)組去重及排序操作相關(guān)遍歷、排序、判斷等使用技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)的數(shù)組去重與排序操作。分享給大家供大家參考,具體如下:

這里演示Java實(shí)現(xiàn)數(shù)組去重、排序操作

文中的示例源碼編寫基于Jdk1.6+、junit4.8.2

java.util.Arrays.sort()

支持對(duì)int[],long[],short[],char[],byte[],float[],double[],Object[]進(jìn)行排序

參考示例代碼片段如下

// 聲明int 數(shù)組,并初始化
int[] intArry = {5,4,7,8,2,0,1,9,3,6,10};
// 對(duì)int數(shù)組進(jìn)行排序
Arrays.sort(intArry);

Junit 測(cè)試類源碼:

package com.gjnote.test.array;
import java.util.Arrays;
import org.junit.Test;
public class TestArraysSort {
// 聲明int 數(shù)組,并初始化
int[] intArry = {5,4,7,8,2,0,1,9,3,6,10};
@Test
public void test() {
// 對(duì)int數(shù)組進(jìn)行排序
Arrays.sort(intArry);
for (int i = 0; i < intArry.length; i++) {
System.out.println(intArry[i]);
}
System.out.println(Arrays.toString(intArry));
}
}

控制臺(tái)輸出

0
1
2
3
4
5
6
7
8
9
10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

java.util.Collections.sort()

通過實(shí)現(xiàn)內(nèi)部compare方法實(shí)現(xiàn)對(duì)象的比較

示例代碼片段如下

/**
* 使用 Collections.sort(list, Comparator(){});
* 對(duì)List數(shù)組排序 推薦使用方法
*/
public void collectionsSortElement1(List list) {
Collections.sort(list, new Comparator() {
@Override
public int compare(String o1, String o2) {
// 根據(jù)實(shí)際排序需要調(diào)整compareTo對(duì)象順序
return (o2).compareTo(o1);
}
});
}

Java實(shí)現(xiàn)對(duì)List去重

方式一,使用for循環(huán)遍歷去除List中的重復(fù)元素

代碼片段如下

List tempList = new ArrayList();
// 去除原始List中的重復(fù)元素
for (String string : originalList) {
if (!tempList.contains(string)) {
tempList.add(string);
}
}

方式二,使用Set去重

代碼片段如下

// Set 利用Set元素唯一性,去重
Set set = new HashSet(originalList);
List tempList = new ArrayList(set);

方式三,使用 TreeSet去除重復(fù)元素

TreeSet treeSet = new TreeSet(originalList);
ListtempList = new ArrayList();
tempList.addAll(treeSet);
// treeSet 默認(rèn)的排序?yàn)樯颍鶕?jù)實(shí)際情況添加是否需要反排序
Collections.reverse(tempList);

Java實(shí)現(xiàn)對(duì)List去重后排序

Junit 測(cè)試List去重及排序源碼

package com.gjnote.test.array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.junit.Before;
import org.junit.Test;
/**
* Test Class
*
List 數(shù)組去重 元素排序
*
* @version 1.0
* @author www.gjnote.com
*
*/
public class TestListArraySort {
private ListoriginalList = null;
@Before
public void setUp() throws Exception {
originalList = new ArrayList();
for (int i = 10000; i > 0; i--) {
originalList.add("element" + i);
// add repeat element
if(i % 2 == 0) {
originalList.add("element" + i);
}
}
}
/**
* 輸出List 元素
* @param list
*/
private void outputList(List list) {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
/**
* 使用 Collections.sort(list, Comparator(){});
* 排序 推薦方法
*/
private void collectionsSortElement(List list) {
long start = System.currentTimeMillis();
Collections.sort(list, new Comparator() {
@Override
public int compare(String o1, String o2) {
// 根據(jù)實(shí)際排序需要調(diào)整compareTo對(duì)象順序
return o2.compareTo(o1);
}
});
//outputList(tempList);
System.out.println("Collections.sort:"
+ (System.currentTimeMillis() - start) + "ms");
}
/**
* 測(cè)試 使用for循環(huán)遍歷去除重復(fù)元素
* Collections.sort排序
*/
@Test
public void testForLoopRemoveRepeatElement() {
System.out.println("testForLoopRemoveRepeatElement");
long start = System.currentTimeMillis();
List tempList = new ArrayList();
// 去除重復(fù)元素
for (String string : originalList) {
if (!tempList.contains(string)) {
tempList.add(string);
}
}
// 排序
collectionsSortElement(tempList);
//outputList(tempList);
System.out.println("使用for循環(huán)遍歷List,去除重復(fù)元素: "
+ (System.currentTimeMillis() - start) + "ms");
}
/**
* 測(cè)試 使用Set去重;
* 使用Collections.sort(list, Comparator(){});排序
*
*/
@Test
public void testSetRemoveRepeatElement() {
System.out.println("testSetRemoveRepeatElement");
long start = System.currentTimeMillis();
// 先排序 (理論值:先排序后去重會(huì)比后排序效率更高)
collectionsSortElement(originalList);
// Set 利用Set元素唯一性,去重
Set set = new HashSet(originalList);
List tempList = new ArrayList(set);
// 后排序 可以注釋先排序,開啟后排序試試運(yùn)行時(shí)間
//collectionsSortElement(tempList);
//outputList(tempList);
System.out.println("Collections.sort排序,使用Set去重:"
+ (System.currentTimeMillis() - start) + "ms");
}
/**
* 測(cè)試 使用 TreeSet去除重復(fù)元素
* 默認(rèn)排序或Collections.reverse翻轉(zhuǎn)排序
*/
@Test
public void testTreeSetRemoveRepeatElement() {
System.out.println("testTreeSetRemoveRepeatElement");
long start = System.currentTimeMillis();
TreeSettreeSet = new TreeSet(originalList);
ListtempList = new ArrayList();
tempList.addAll(treeSet);
// treeSet 默認(rèn)的排序?yàn)樯?,根?jù)實(shí)際情況添加是否需要反排序
Collections.reverse(tempList);
//outputList(tempList);
System.out.println("使用 TreeSet排序,去除重復(fù)元素:"
+ (System.currentTimeMillis() - start) + "ms");
}
@Test
public void testMethods() {
//outputList(originalList);
// List 去重 推薦方法
testSetRemoveRepeatElement();// 14ms
testTreeSetRemoveRepeatElement();// 20ms
//testForLoopRemoveRepeatElement();// 2525ms
}
}

運(yùn)行testSetRemoveRepeatElement()控制臺(tái)輸出結(jié)果

testSetRemoveRepeatElement
Collections.sort:8ms
Collections.sort排序,使用Set去重:14ms

運(yùn)行testTreeSetRemoveRepeatElement()控制臺(tái)輸出結(jié)果

testTreeSetRemoveRepeatElement
使用 TreeSet排序,去除重復(fù)元素:20ms

運(yùn)行testForLoopRemoveRepeatElement()控制臺(tái)輸出結(jié)果

testForLoopRemoveRepeatElement
Collections.sort:7ms
使用for循環(huán)遍歷List,去除重復(fù)元素: 2525ms

PS:這里再為大家提供幾款相關(guān)工具供大家參考使用:

在線去除重復(fù)項(xiàng)工具:
http://tools.jb51.net/code/quchong

在線文本去重復(fù)工具:
http://tools.jb51.net/aideddesign/txt_quchong

在線動(dòng)畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • spring cloud學(xué)習(xí)教程之config修改配置詳解

    spring cloud學(xué)習(xí)教程之config修改配置詳解

    這篇文章主要給大家介紹了關(guān)于spring cloud學(xué)習(xí)教程之config修改配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • JAVA 多線程之信號(hào)量(Semaphore)實(shí)例詳解

    JAVA 多線程之信號(hào)量(Semaphore)實(shí)例詳解

    這篇文章主要介紹了JAVA 多線程之信號(hào)量(Semaphore)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Java關(guān)鍵字volatile詳析

    Java關(guān)鍵字volatile詳析

    這篇文章主要介紹了Java關(guān)鍵字volatile,volatile關(guān)鍵字可以說是Java虛擬機(jī)提供的最輕量級(jí)的同步機(jī)制,但對(duì)于為什么它只能保證可見性,不保證原子性,它又是如何禁用指令重排的,還有很多同學(xué)沒徹底理解,文章會(huì)讓大家牢掌握一個(gè)Java核心知識(shí)點(diǎn)
    2022-01-01
  • Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng)

    Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • java中重載、覆蓋和隱藏三者的區(qū)別分析

    java中重載、覆蓋和隱藏三者的區(qū)別分析

    本篇文章介紹了,在java中重載、覆蓋和隱藏它們?nèi)叩膮^(qū)別分析。需要的朋友參考下
    2013-04-04
  • Java解決LocalDateTime傳輸前端為時(shí)間的數(shù)組

    Java解決LocalDateTime傳輸前端為時(shí)間的數(shù)組

    本文主要介紹了Java解決LocalDateTime傳輸前端為時(shí)間的數(shù)組,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • springboot 啟動(dòng)如何排除某些bean的注入

    springboot 啟動(dòng)如何排除某些bean的注入

    這篇文章主要介紹了springboot 啟動(dòng)如何排除某些bean的注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java實(shí)現(xiàn)將Webp轉(zhuǎn)為jpg格式方式

    java實(shí)現(xiàn)將Webp轉(zhuǎn)為jpg格式方式

    這篇文章主要介紹了java實(shí)現(xiàn)將Webp轉(zhuǎn)為jpg格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java異常中toString()和getMessage()區(qū)別

    Java異常中toString()和getMessage()區(qū)別

    在java異常體系中,要打印異常信息,可以通過:e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印,本文主要介紹了Java異常中toString()和getMessage()區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • SSh結(jié)合Easyui實(shí)現(xiàn)Datagrid的分頁顯示

    SSh結(jié)合Easyui實(shí)現(xiàn)Datagrid的分頁顯示

    這篇文章主要為大家詳細(xì)介紹了SSh結(jié)合Easyui實(shí)現(xiàn)Datagrid的分頁顯示的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評(píng)論

类乌齐县| 宁国市| 深圳市| 安义县| 花莲县| 海宁市| 丰城市| 彭泽县| 紫阳县| 鹿泉市| 和田市| 太康县| 阿克陶县| 仁寿县| 九江县| 贡觉县| 南昌县| 永胜县| 南皮县| 南乐县| 兴安县| 子洲县| 德兴市| 宝鸡市| 乌拉特前旗| 马山县| 北碚区| 云阳县| 碌曲县| 曲周县| 灵宝市| 荥经县| 赫章县| 奇台县| 岐山县| 祁连县| 安丘市| 明水县| 涟水县| 沙田区| 永定县|