[javaSE] 集合工具类(Collections-sort)

java为我们提供了一个集合的工具类,方便我们对集合进行操作,里面的方法都是静态方法。

Collections.sort()方法,参数:List<T>集合对象,这个对象带着泛型,是为了保证集合中的元素具备可比较性,因此这个返回值的泛型就会特殊点, <T extends Comparable <? super T>>

默认排序字符串,是按照字母的排列顺序

如果是中文,默认是按照ascii编码进行排序的

自定义一个比较器,实现按照字符串的长度进行排序

定义一个类StrComparator实现Comparator类

实现方法compare(),参数:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionsDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        List<String> list=new ArrayList<String>();
        list.add("aaa");
        list.add("ccc");
        list.add("bbb");
        list.add("eee");
        System.out.println(list);//输出 [aaa, ccc, bbb, eee]
        Collections.sort(list);
        System.out.println(list);//输出 [aaa, bbb, ccc, eee]

        List<String> list2=new ArrayList<String>();
        list2.add("陶");
        list2.add("士");
        list2.add("涵");
        System.out.println(list2);//输出 [陶, 士, 涵]
        Collections.sort(list2);
        System.out.println(list2);//输出 [士, 涵, 陶]

        List<String> list3=new ArrayList<String>();
        list3.add("aaa");
        list3.add("c");
        list3.add("bb");
        list3.add("eeee");
        System.out.println(list3);//输出 [aaa, c, bb, eeee]
        Collections.sort(list3,new StrComparator());
        System.out.println(list3);//输出 [c, bb, aaa, eeee]

    }

}
/**
 * 自定义比较器
 * @author taoshihan
 *
 */
class StrComparator implements Comparator<String>{

    @Override
    public int compare(String o1, String o2) {
        if(o1.length()>o2.length()){
            return 1;
        }else if(o1.length()<o2.length()){
            return -1;
        }
        return o1.compareTo(o2);
    }

}

PHP版:

<?php
$list=array("aaa","ccc","bbb","eee");
sort($list);
print_r($list);//输出 Array ( [0] => aaa [1] => bbb [2] => ccc [3] => eee )

$list2=array("陶","士","涵");
sort($list2);
print_r($list2);//输出 Array ( [0] => 士 [1] => 涵 [2] => 陶 )

$list3=array("aaa","c","bb","eeee");
usort($list3,"StrComparator");
print_r($list3);//输出 Array ( [0] => c [1] => bb [2] => aaa [3] => eeee )

//自定义的比较函数
function StrComparator($a,$b){
    if(strlen($a)>strlen($b)){
        return 1;
    }elseif(strlen($a)<strlen($b)){
        return -1;
    }
    return 0;
}
时间: 2024-11-03 21:57:14

[javaSE] 集合工具类(Collections-sort)的相关文章

Java从零开始学二十四点(集合工具类Collections)

一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二.Collections类的常用方法及常量 No. 方法 类型 描述 1 public static final List EMPTY_LIST 常量 返回一个空的List集合 2 public static final Set EMPTY_SET 常量 返回空的Set集合 3 public sta

java集合工具类---Collections/Arrays

/* *Collections用于操作List/Set的工具类 *Arrays用于操作数组的工具类 */ package pack; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.TreeSet; public class Main { pu

java集合(工具类Collections)

/* *1 Collections.sort(list集合,比较器); *sort方法不仅可以对list进行自然排序,还可以根据需求定义比较器进行排序. *sort方法不能对Set集合进行排序. *binarySearch方法对集合进行插入,且保证集合有序,如果查找的元素不存在 *则返回比该元素大一个位置的元素的下标加一的相反数,他的原理是折半查找. *fill方法可以将list集合中所有的元素替换成指定元素. *练习,将集合中部分元素替换成指定元素. *replaceAll方法将某一元素替换成

Java8集合框架——集合工具类Collections内部方法浅析

本文的目录结构: 零:Collections 的官方注释 一.Algorithms(算法类操作) 01.排序 sort 02.二分查找 binarySearch 03.列表反转 reverse 04.元素重排列 shuffle 05.元素交换 swap 06.列表填充 fill 07.元素复制 copy 08.最小/最大元素查找 min/max 09.数组旋转 rotate 10.元素替换 replaceAll 11.子列表匹配 二.Unmodifiable Wrappers(不可变包装类) 三

java Collections集合工具类

/* Collections是Collection的工具类. 工具类中其中两个比较常用的方法就是: 1,sort(list) . sort(list,自定义比较器) 2,max(list) . max(list,自定义比较器) 3,binarySearch(list,key) //利用折半查找的方法找到list中key元素的索引,存在则返回索引,不存在则返回-(插入点)-1 */ import java.util.*; class CollectionsDemo { public static

Map集合以及Collections集合工具类

一.Collection集合主要特点与Map集合的区别 Collection: 单列集合:有两个子接口 List集合元素是有序的,可以重复的 Set集合元素是无序的,不可以重复 List:元素可重复,有序 ArrayList:底层数据结构是数组,查询快,增删慢,不同步,线程不安全,效率高:没有特殊说明一般使用ArrayList集合: Vector:底层数据结构是数组,查询快,增删慢,同步,线程安全,效率低:有一个elements()特有迭代方法: LinkedList:底层数据结构是链表,查询慢

Java基础知识回顾-22(静态导入,可变参数,Collections集合工具类,集合嵌套)

1.在导包的时候可以导入其静态部分,这样在类中使用其时,可以直接以其名使用 例如:Map.Entry的访问,在类文件头部导入import java.util.Map.Entry后简化后为Entry. 2.可以用"修饰符 返回值类型 方法名(参数类型... 形参名){  }"的方式来同时传入不确定个数,相同参数类型的参数.比如当求不确定个数的int类型的数据的和时,可以使用这种方式,避免写多个方法,如果参数类型不改变,则该方法不可重载,因为可变参数不确定参数个数吗.若要增加不可变参数,需

java map接口,可变参数,Collections集合工具类

map接口的实现类存储成对的值,键--值.通过键来找到对应的值. Collection中的集合称为单列集合,Map中的集合称为双列集合 Map中常用的集合为HashMap集合.LinkedHashMap集合. HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复,需要重写键的hashCode()方法.equals()方法. LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈

Collections集合工具类

Collections集合工具类,专门用来对集合进行操作的. 常用方法: public static<T> boolean addAll(Collection<T> c,T....elements):往集合中添加一些元素 public static void shuffle(List<?> list):打乱list集合顺序 public static <T> void sort(List<?> list):将集合中的元素,按照默认规则排序,自定义