Java 8忽略大小写排序字符串

假如有一个Student对象的列表students,现在需要对Student对象的name名字不区分大小写排序。

方法一

在java 8里可以使用列表的sort方法,也可以使用stream().sorted,并结合Comparator.comparing做排序

List<Student> students = ...
students.sort(Comparator.comparing(Student::getName, String.CASE_INSENSITIVE_ORDER));

Comparator.comparing指定排序的属性,以及比较的方式String.CASE_INSENSITIVE_ORDER忽略大小写。

方法二

但如果比较的字符串中含有本地化的字符,可能会导致比较的顺序不一致,可以使用 java.text.Collator

Collator collator = Collator.getInstance();
collator.setStrength(Collator.PRIMARY);
students.sort(Comparator.comparing(Student::getName, collator));

如果要忽略大小写,需要把Collator排序强调设定为Collator.PRIMARY。



版权声明:著作权归作者所有。

相关推荐

Java 8/9使用Stream获取字符出现在字符串的索引列表

需求是这样的:输入一个字符串和一个字符,返回此字符出现在字符串里的所有索引。可以使用for循环迭代字符串可以实现此需求。考虑了下java8和java9的实现方案。java 8使用IntStream的实现方案public static List<Integer> getIndexes(String s, char c)

JavaScript(ES6)判断字符串是否包含子字符串的方法

ES6 includesES6的字符串新增了includes方法,我们可以用它来判断是否包含子字符串。str.includes(searchString[, position]) searchString:查询的子字符串position:可选,开始搜索的位置,默认为0'Blue Whale'.includes('Blue'); // returns

Kotlin:基本类型 - 字符串

Kotlin字符串使用String表示类型,为不可变类型。字符串表示字符串有两种表示方式:单行和多行。 单行单行使用双引号把内容括起来。val s = “Hello,World” 如果需要在单行里表示换行的字符串需要对换行符转义val s = “Hello, World \n” 多行多行用来表示原始的字符串,

TypeScript:字符串转换为数字

在TypeScript,String转换为Number有以下方式:Number构造函数(推荐)let n = Number('1234') // 1234 let nan = Number('abcd') // NaN +号操作符let n = +'1234' 

Java 9:紧凑字符串(Compact String)

目前Java的String实现是把字符串存放在一个char类型的数组里,char占用两个字节(16位)。但是String作为很常用的类,在很多时候它只包含Latin-1里的字符,这些字符只需要一个字节(8位)存储,所以在这种情况下很容易造成空间的浪费。Java 9引进紧凑字符串来解决这个问题。使用UTF-16字符数组,或者是1字节的数组加上一个编码标识符来存储字符串。如果字符串的内容都是