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测试类源码:
packagecom.gjnote.test.array;
importjava.util.Arrays;
importorg.junit.Test;
publicclassTestArraysSort{
//声明int数组,并初始化
int[]intArry={5,4,7,8,2,0,1,9,3,6,10};
@Test
publicvoidtest(){
//对int数组进行排序
Arrays.sort(intArry);
for(inti=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数组排序推荐使用方法
*/
publicvoidcollectionsSortElement1(Listlist){
Collections.sort(list,newComparator(){
@Override
publicintcompare(Stringo1,Stringo2){
//根据实际排序需要调整compareTo对象顺序
return(o2).compareTo(o1);
}
});
}
Java实现对List去重
方式一,使用for循环遍历去除List中的重复元素
代码片段如下
ListtempList=newArrayList();
//去除原始List中的重复元素
for(Stringstring:originalList){
if(!tempList.contains(string)){
tempList.add(string);
}
}
方式二,使用Set去重
代码片段如下
//Set利用Set元素唯一性,去重 Setset=newHashSet(originalList); ListtempList=newArrayList(set);
方式三,使用TreeSet去除重复元素
TreeSettreeSet=newTreeSet(originalList); ListtempList=newArrayList(); tempList.addAll(treeSet); //treeSet默认的排序为升序,根据实际情况添加是否需要反排序 Collections.reverse(tempList);
Java实现对List去重后排序
Junit测试List去重及排序源码
packagecom.gjnote.test.array;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Comparator;
importjava.util.HashSet;
importjava.util.List;
importjava.util.Set;
importjava.util.TreeSet;
importorg.junit.Before;
importorg.junit.Test;
/**
*TestClass
*
List数组去重元素排序
*
*@version1.0
*@authorwww.gjnote.com
*
*/
publicclassTestListArraySort{
privateListoriginalList=null;
@Before
publicvoidsetUp()throwsException{
originalList=newArrayList();
for(inti=10000;i>0;i--){
originalList.add("element"+i);
//addrepeatelement
if(i%2==0){
originalList.add("element"+i);
}
}
}
/**
*输出List元素
*@paramlist
*/
privatevoidoutputList(Listlist){
for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
/**
*使用Collections.sort(list,Comparator(){});
*排序推荐方法
*/
privatevoidcollectionsSortElement(Listlist){
longstart=System.currentTimeMillis();
Collections.sort(list,newComparator(){
@Override
publicintcompare(Stringo1,Stringo2){
//根据实际排序需要调整compareTo对象顺序
returno2.compareTo(o1);
}
});
//outputList(tempList);
System.out.println("Collections.sort:"
+(System.currentTimeMillis()-start)+"ms");
}
/**
*测试使用for循环遍历去除重复元素
*Collections.sort排序
*/
@Test
publicvoidtestForLoopRemoveRepeatElement(){
System.out.println("testForLoopRemoveRepeatElement");
longstart=System.currentTimeMillis();
ListtempList=newArrayList();
//去除重复元素
for(Stringstring: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
publicvoidtestSetRemoveRepeatElement(){
System.out.println("testSetRemoveRepeatElement");
longstart=System.currentTimeMillis();
//先排序(理论值:先排序后去重会比后排序效率更高)
collectionsSortElement(originalList);
//Set利用Set元素唯一性,去重
Setset=newHashSet(originalList);
ListtempList=newArrayList(set);
//后排序可以注释先排序,开启后排序试试运行时间
//collectionsSortElement(tempList);
//outputList(tempList);
System.out.println("Collections.sort排序,使用Set去重:"
+(System.currentTimeMillis()-start)+"ms");
}
/**
*测试使用TreeSet去除重复元素
*默认排序或Collections.reverse翻转排序
*/
@Test
publicvoidtestTreeSetRemoveRepeatElement(){
System.out.println("testTreeSetRemoveRepeatElement");
longstart=System.currentTimeMillis();
TreeSettreeSet=newTreeSet(originalList);
ListtempList=newArrayList();
tempList.addAll(treeSet);
//treeSet默认的排序为升序,根据实际情况添加是否需要反排序
Collections.reverse(tempList);
//outputList(tempList);
System.out.println("使用TreeSet排序,去除重复元素:"
+(System.currentTimeMillis()-start)+"ms");
}
@Test
publicvoidtestMethods(){
//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程序设计有所帮助。