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

这篇文章主要介绍了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:这里再为大家提供几款相关工具供大家参考使用:

在线去除重复项工具:
http://tools.0133.cn/code/quchong

在线文本去重复工具:
http://tools.0133.cn/aideddesign/txt_quchong

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

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

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

以上就是Java实现的数组去重与排序操作详解的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java