java中数组去重并排序_Java实现的数组去重与排序操作详解

本文实例讲述了Java实现的数组去重与排序操作。分享给大家供大家参考,具体如下:

这里演示Java实现数组去重、排序操作

文中的示例源码编写基于Jdk1.6+、junit4.8.2

java.util.Arrays.sort()

支持对int[],long[],short[],char[],byte[],float[],double[],Object[]进行排序

参考示例代码片段如下

// 声明int 数组,并初始化

int[] intArry = {5,4,7,8,2,0,1,9,3,6,10};

// 对int数组进行排序

Arrays.sort(intArry);

Junit 测试类源码:

package com.gjnote.test.array;

import java.util.Arrays;

import org.junit.Test;

public class TestArraysSort {

// 声明int 数组,并初始化

int[] intArry = {5,4,7,8,2,0,1,9,3,6,10};

@Test

public void test() {

// 对int数组进行排序

Arrays.sort(intArry);

for (int i = 0; i < intArry.length; i++) {

System.out.println(intArry[i]);

}

System.out.println(Arrays.toString(intArry));

}

}

控制台输出

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()

通过实现内部compare方法实现对象的比较

示例代码片段如下

/**

* 使用 Collections.sort(list, Comparator(){});

* 对List数组排序 推荐使用方法

*/

public void collectionsSortElement1(List list) {

Collections.sort(list, new Comparator() {

@Override

public int compare(String o1, String o2) {

// 根据实际排序需要调整compareTo对象顺序

return (o2).compareTo(o1);

}

});

}

Java实现对List去重

方式一,使用for循环遍历去除List中的重复元素

代码片段如下

List tempList = new ArrayList();

// 去除原始List中的重复元素

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去除重复元素

TreeSet treeSet = new TreeSet(originalList);

ListtempList = new ArrayList();

tempList.addAll(treeSet);

// treeSet 默认的排序为升序,根据实际情况添加是否需要反排序

Collections.reverse(tempList);

Java实现对List去重后排序

Junit 测试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 数组去重 元素排序

*

* @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) {

// 根据实际排序需要调整compareTo对象顺序

return o2.compareTo(o1);

}

});

//outputList(tempList);

System.out.println("Collections.sort:"

+ (System.currentTimeMillis() - start) + "ms");

}

/**

* 测试 使用for循环遍历去除重复元素

* Collections.sort排序

*/

@Test

public void testForLoopRemoveRepeatElement() {

System.out.println("testForLoopRemoveRepeatElement");

long start = System.currentTimeMillis();

List tempList = new ArrayList();

// 去除重复元素

for (String string : originalList) {

if (!tempList.contains(string)) {

tempList.add(string);

}

}

// 排序

collectionsSortElement(tempList);

//outputList(tempList);

System.out.println("使用for循环遍历List,去除重复元素: "

+ (System.currentTimeMillis() - start) + "ms");

}

/**

* 测试 使用Set去重;

* 使用Collections.sort(list, Comparator(){});排序

*

*/

@Test

public void testSetRemoveRepeatElement() {

System.out.println("testSetRemoveRepeatElement");

long start = System.currentTimeMillis();

// 先排序 (理论值:先排序后去重会比后排序效率更高)

collectionsSortElement(originalList);// Set 利用Set元素唯一性,去重

Set set = new HashSet(originalList);

List tempList = new ArrayList(set);// 后排序 可以注释先排序,开启后排序试试运行时间

//collectionsSortElement(tempList);

//outputList(tempList);

System.out.println("Collections.sort排序,使用Set去重:"

+ (System.currentTimeMillis() - start) + "ms");

}

/**

* 测试 使用 TreeSet去除重复元素

* 默认排序或Collections.reverse翻转排序

*/

@Test

public void testTreeSetRemoveRepeatElement() {

System.out.println("testTreeSetRemoveRepeatElement");

long start = System.currentTimeMillis();

TreeSettreeSet = new TreeSet(originalList);

ListtempList = new ArrayList();

tempList.addAll(treeSet);

// treeSet 默认的排序为升序,根据实际情况添加是否需要反排序

Collections.reverse(tempList);

//outputList(tempList);

System.out.println("使用 TreeSet排序,去除重复元素:"

+ (System.currentTimeMillis() - start) + "ms");

}

@Test

public void testMethods() {

//outputList(originalList);

// List 去重 推荐方法

testSetRemoveRepeatElement();// 14ms

testTreeSetRemoveRepeatElement();// 20ms

//testForLoopRemoveRepeatElement();// 2525ms

}

}

运行testSetRemoveRepeatElement()控制台输出结果

testSetRemoveRepeatElement

Collections.sort:8ms

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

运行testTreeSetRemoveRepeatElement()控制台输出结果

testTreeSetRemoveRepeatElement

使用 TreeSet排序,去除重复元素:20ms

运行testForLoopRemoveRepeatElement()控制台输出结果

testForLoopRemoveRepeatElement

Collections.sort:7ms

使用for循环遍历List,去除重复元素: 2525ms

PS:这里再为大家提供几款相关工具供大家参考使用:

希望本文所述对大家java程序设计有所帮助。

您可能感兴趣的文章:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值