Java实现的数组去重与排序操作详解

网友投稿 685 2023-01-26


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 tempLihttp://st = 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 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:这里再为大家提供几款相关工具供大家参考使用:

在线去除重复项工具:

http://tools.jb51.net/code/quchong

在线文本去重复工具:

http://tools.jb51.net/aideddesign/txt_quchong

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:

http://tools.jb51.net/aideddesign/paixu_ys

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈Java slf4j日志简单理解
下一篇:vue 组件中添加样式不生效的解决方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~