最近在做代码勇士codewars的题目,顺便记录一下自己的解决方案。

1.排序类

1.1 不使用预定义比较器
  1. package com.dylan.practice;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;
  6. /**
  7. * 不区分大小写的升序排序List
  8. * @author xusucheng
  9. * @create 2017-11-23
  10. **/
  11. public class Sorter {
  12. public static List<String> sort(List<String> textbooks) {
  13. Collections.sort(textbooks, new Comparator<String>(){
  14. public int compare(String s1, String s2) {
  15. return s1.toUpperCase().compareTo(s2.toUpperCase());
  16. }
  17. });
  18. return textbooks;
  19. }
  20. public static void main(String[] args) {
  21. List<String> unsort = new ArrayList<String>();
  22. for (String s : new String[]{"Algebra", "History", "Geometry", "english"}) {
  23. unsort.add(s);
  24. }
  25. System.out.println(sort(unsort));
  26. }
  27. //自定义比较类
  28. /*static class SortCaseNoSensitive implements Comparator<String>{
  29. public int compare(String s1, String s2) {
  30. return s1.toUpperCase().compareTo(s2.toUpperCase());
  31. }
  32. }*/
  33. }
1.2 使用预定义比较器
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. class Sorter {
  4. public static ArrayList<String> sort(ArrayList<String> textbooks) {
  5. Collections.sort(textbooks, String.CASE_INSENSITIVE_ORDER);
  6. System.out.println(textbooks);
  7. return textbooks;
  8. }
  9. }

2.测试类

  1. /**
  2. * @author xusucheng
  3. * @create 2017-11-24
  4. **/
  5. import com.dylan.practice.Sorter;
  6. import org.junit.Test;
  7. import static org.junit.Assert.assertEquals;
  8. import org.junit.runners.JUnit4;
  9. import java.util.ArrayList;
  10. import java.util.Collections;
  11. import java.lang.Math;
  12. public class SortingTest {
  13. @Test
  14. public void basicTest() {
  15. ArrayList<String> sorted = new ArrayList<String>();
  16. ArrayList<String> strs = new ArrayList<String>();
  17. for(String s : new String[] {"Algebra", "History", "Geometry", "English"})
  18. strs.add(s);
  19. for(String s : new String[] {"Algebra", "English", "Geometry", "History"})
  20. sorted.add(s);
  21. assertEquals(sorted, Sorter.sort(strs));
  22. }
  23. @Test
  24. public void capitalizationTest() {
  25. ArrayList<String> sorted = new ArrayList<String>();
  26. ArrayList<String> strs = new ArrayList<String>();
  27. for(String s : new String[] {"Algebra", "history", "Geometry", "english"})
  28. strs.add(s);
  29. for(String s : new String[] {"Algebra", "english", "Geometry", "history"})
  30. sorted.add(s);
  31. assertEquals(sorted, Sorter.sort(strs));
  32. }
  33. @Test
  34. public void symbolsTest() {
  35. ArrayList<String> sorted = new ArrayList<String>();
  36. ArrayList<String> strs = new ArrayList<String>();
  37. for(String s : new String[] {"Alg#bra", "$istory", "Geom^try", "**English"})
  38. strs.add(s);
  39. for(String s : new String[] {"$istory", "**English", "Alg#bra", "Geom^try"})
  40. sorted.add(s);
  41. assertEquals(sorted, Sorter.sort(strs));
  42. }
  43. }

java ArrayList排序不区分大小写的更多相关文章

  1. Java ArrayList排序方法详解

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...

  2. Java ArrayList中对象的排序 (Comparable VS Comparator)

    我们通常使用Collections.sort()方法来对一个简单的数据列表排序.但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了.在使用这两者 ...

  3. Java ArrayList的不同排序方法

    本文由 ImportNew - 温布利往事 翻译自 dzone.欢迎加入翻译小组.转载请见文末要求. 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.Arra ...

  4. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  5. ArrayList排序

    今天发现,ArrayList 排序不满足期望. 起先,List是这样Before sort: [1, @I, am, Love, java, very, Much] 使用Collections.sor ...

  6. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  7. java 集合排序(转)

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  8. Java ArrayList、Vector和LinkedList等的差别与用法(转)

    Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都 ...

  9. Java八大排序算法

    Java八大排序算法: package sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...

  10. java 集合排序

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

随机推荐

  1. [转帖]DevOps & CI/CD 常见面试题汇总

    https://www.cnblogs.com/Dev0ps/p/15123168.html 什么是 DevOps答:用最简单的术语来说,DevOps 是产品开发过程中开发(Dev)和运营(Ops) ...

  2. [转帖]SIMD指令集 SSE/AVX

    SIMD指令集 SSE/AVX 概述 参考手册 Intel Intrinsics Guide Tommesani.com Docs Intel 64 and IA-32 Architectures S ...

  3. [转帖]修改jmeter内存配置(win&mac&linux)

    目录 一.背景: 二.win环境下修改jmeter内存 三.mac&linux环境下修改jmeter内存 四.验证内存是否修改成功 一.背景: 在进行大数据.高并发压测的过程性,有时会遇上JM ...

  4. [转帖]Linux平台shell脚本输入密码,不显示明文

    需求:shell脚本中输入密码,要求不显示明文,需要将其转换为"*"星号,或者不显示 实现方案:有两种实现方案,一是通过stty命令来实现,二是直接使用read来实现 方案一:使用 ...

  5. [转帖]DD硬盘性能相关因素

    https://www.jianshu.com/p/a15d7a65c876 本文简单介绍下DD测试硬盘性能时,各个因素的影响 首先列出测试结果   image.png oflag分析--/home ...

  6. [转帖]Linux性能测试之unixbench

    https://www.modb.pro/db/487945 大家好,昨天为大家带来了一篇关于在Linux下性能测试的文章<性能测试之LTP>,今天继续为大家推荐系列工具之unixbenc ...

  7. mysql 获取 今天是今年的第几天, 以及 还有多少天元旦的方法

    1. 获取今天是这一年的第几天 select dayofyear(curdate()); 或者是 select dayofyear(now()); 2. 获取还有多少天元旦的方法 select dat ...

  8. qperf 简要总结 - 延迟与带宽信息

    总结 同一个虚拟机: 延迟: 12us 带宽: 6GB/S 同一个物理机上面的虚拟机: 延迟: 50us-100us 带宽: 1.2GB/S 同一个交换机上面的虚拟机: 延迟: 60us 带宽: 12 ...

  9. ElasticSearch集群灾难:别放弃,也许能再抢救一下 | 京东云技术团队

    ​ 1 前言 Elasticsearch作为一个分布式搜索引擎,自身是高可用的:但也架不住一些特殊情况的发生,如: 集群超过半数的master节点丢失,ES的节点无法形成一个集群,进而导致集群不可用: ...

  10. echarts去除坐标轴上的x和y轴

    通过 show:false控制手否显示 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...