java ArrayList排序不区分大小写
最近在做代码勇士codewars的题目,顺便记录一下自己的解决方案。
1.排序类
1.1 不使用预定义比较器
package com.dylan.practice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 * 不区分大小写的升序排序List
 * @author xusucheng
 * @create 2017-11-23
 **/
public class Sorter {
    public static List<String> sort(List<String> textbooks) {
        Collections.sort(textbooks, new Comparator<String>(){
            public int compare(String s1, String s2) {
                return s1.toUpperCase().compareTo(s2.toUpperCase());
            }
        });
        return textbooks;
    }
    public static void main(String[] args) {
        List<String> unsort = new ArrayList<String>();
        for (String s : new String[]{"Algebra", "History", "Geometry", "english"}) {
            unsort.add(s);
        }
        System.out.println(sort(unsort));
    }
    //自定义比较类
    /*static class SortCaseNoSensitive implements Comparator<String>{
        public int compare(String s1, String s2) {
            return s1.toUpperCase().compareTo(s2.toUpperCase());
        }
    }*/
}
1.2 使用预定义比较器
import java.util.ArrayList;
import java.util.Collections;
class Sorter {
  public static ArrayList<String> sort(ArrayList<String> textbooks) {
    Collections.sort(textbooks, String.CASE_INSENSITIVE_ORDER);
    System.out.println(textbooks);
    return textbooks;
  }
}
2.测试类
/**
 * @author xusucheng
 * @create 2017-11-24
 **/
import com.dylan.practice.Sorter;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
import java.util.ArrayList;
import java.util.Collections;
import java.lang.Math;
public class SortingTest {
    @Test
    public void basicTest() {
        ArrayList<String> sorted = new ArrayList<String>();
        ArrayList<String> strs = new ArrayList<String>();
        for(String s : new String[] {"Algebra", "History", "Geometry", "English"})
            strs.add(s);
        for(String s : new String[] {"Algebra", "English", "Geometry", "History"})
            sorted.add(s);
        assertEquals(sorted, Sorter.sort(strs));
    }
    @Test
    public void capitalizationTest() {
        ArrayList<String> sorted = new ArrayList<String>();
        ArrayList<String> strs = new ArrayList<String>();
        for(String s : new String[] {"Algebra", "history", "Geometry", "english"})
            strs.add(s);
        for(String s : new String[] {"Algebra", "english", "Geometry", "history"})
            sorted.add(s);
        assertEquals(sorted, Sorter.sort(strs));
    }
    @Test
    public void symbolsTest() {
        ArrayList<String> sorted = new ArrayList<String>();
        ArrayList<String> strs = new ArrayList<String>();
        for(String s : new String[] {"Alg#bra", "$istory", "Geom^try", "**English"})
            strs.add(s);
        for(String s : new String[] {"$istory", "**English", "Alg#bra", "Geom^try"})
            sorted.add(s);
        assertEquals(sorted, Sorter.sort(strs));
    }
}
												
											java ArrayList排序不区分大小写的更多相关文章
- Java ArrayList排序方法详解
		
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...
 - Java ArrayList中对象的排序 (Comparable VS Comparator)
		
我们通常使用Collections.sort()方法来对一个简单的数据列表排序.但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了.在使用这两者 ...
 - Java ArrayList的不同排序方法
		
本文由 ImportNew - 温布利往事 翻译自 dzone.欢迎加入翻译小组.转载请见文末要求. 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.Arra ...
 - Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
		
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
 - ArrayList排序
		
今天发现,ArrayList 排序不满足期望. 起先,List是这样Before sort: [1, @I, am, Love, java, very, Much] 使用Collections.sor ...
 - Java 常用排序算法/程序员必须掌握的 8大排序算法
		
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
 - java 集合排序(转)
		
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
 - Java ArrayList、Vector和LinkedList等的差别与用法(转)
		
Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都 ...
 - Java八大排序算法
		
Java八大排序算法: package sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...
 - java 集合排序
		
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
 
随机推荐
- [转帖]Dockerfile中CMD和ENTRYPOINT命令详解
			
https://www.jb51.net/article/136264.htm Dockerfile中的ENTRYPOINT指令和CMD指令都可以设置容器启动时要执行的命令,但用途是有略微不同的. ...
 - [转帖]Sar的一次使用案例
			
https://www.jianshu.com/p/b93342d43e13 问题现象 有一台机器,在某个时间点OS类似无响应,造成使用者感觉在该时间点机器应该发生重启,就此问题进行分析. 日志查看 ...
 - [转帖]BIS出口管制新规说明会,进一步明确十大问题
			
https://zhuanlan.zhihu.com/p/573765504 10月13日晚9点,BIS就出口管制新规举行电话会议简报,出口执法助理副部长Thea Kendler主持会议.小白总结要点 ...
 - [转帖]FT-2000+/64 - Phytium
			
https://en.wikichip.org/wiki/phytium/feiteng/ft-2000%2B-64 Edit Values FT-2000+/64 General Info De ...
 - [转帖]@nginx多server及使用优化(php)
			
文章目录  一.nginx多server优先级  二.禁止IP访问页面  三.nginx的包含include  四.nginx 路径的alias和root  1.配 ...
 - 银河麒麟系统信息获取V1.0版本
			
银河麒麟系统信息获取 摘要 最近项目有一些兼容性测试需求. 可能需要获取一些系统配置信息便于相关的工作. 想着自己总结一下. 便于后续的不太熟悉的同事进行简要处理 银河麒麟获取版本 nkvers # ...
 - ChaosMesh 半离线安装过程
			
说明 所谓半离线值得是公司拉不下镜像来 !-_-! 都是学习的官网资料https://chaos-mesh.org/docs 镜像获取 其实镜像获取很容易. 找一个能上外网的VPC就可以了. mkdi ...
 - elementui中表格表头设置背景色
			
参考的地址: https://www.cnblogs.com/lljun/p/11551128.html 今天在设置表格的表头的时候,我通过类的时候 发现无法设置表格的表头设置不了颜色: 经过查找:原 ...
 - 一键式文本纠错工具,整合了BERT、ERNIE等多种模型,让您立即享受纠错的便利和效果
			
pycorrector一键式文本纠错工具,整合了BERT.MacBERT.ELECTRA.ERNIE等多种模型,让您立即享受纠错的便利和效果 pycorrector: 中文文本纠错工具.支持中文音似. ...
 - 人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
			
"AI Earth"人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化).CNN+LSTM模型建模 1.气象海洋预测-数据分析 数据分 ...