最近在做代码勇士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排序不区分大小写的更多相关文章

  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. shell-命令行位置参数-$n

  2. [转帖]SQL Server数据库重建索引、更新统计信息

    https://vip.kingdee.com/article/183932?productLineId=8 SQL Server数据库有时由于长期未做索引重建,导致SQL执行效率下降,当表的索引碎片 ...

  3. [转帖]9.2 TiFlash 架构与原理

    9.2 TiFlash 架构与原理 相比于行存,TiFlash 根据强 Schema 按列式存储结构化数据,借助 ClickHouse 的向量化计算引擎,带来读取和计算双重性能优势.相较于普通列存,T ...

  4. [转帖]Jmeter 压测中配置https证书

    本文章 主要介绍证书的获取.处理.配置到jmeter中. 1. 获取证书 首先:谷歌浏览器 打开网站,点击 地址栏的锁(表示https),选择 "证书"---"隐私.搜索 ...

  5. 申威3231_SPECJVM2008的测试结果与信创服务器对比验证

    申威3231_SPECJVM2008的测试结果与信创服务器对比验证 背景 周六找同事将在公司里的机器进行了开机. 然后验证了config.guess和config.sub 的确是可以通过复制/usr ...

  6. [转帖]Linux设备与内存单位-扇区、块、段、页(sector、block、segment、page)

    每个概念是对不同的对象而言的,但它们有一定的联系 这些概念的分析背景是Linux下的内存页和磁盘结构 扇区 是硬盘等存储设备传送单位,大小一般为512B 块 是VFS和文件系统的传送单位(所以相关设备 ...

  7. [转帖]Windows系统内置测试工具(winsat)

    WinSAT 是 Windows 系统评估工具(Windows System Assessment Tool)的缩写,是从 Windows Vista 开始便内置于系统之中的命令行工具,可对 Wind ...

  8. Java进程 OOM的多种情况

    Java进程 OOM的多种情况 摘要 OOM 其实有多种: 第一类是JVM原生自发处理的, 这种也分为多种情况. 1. 堆区使用了比较多,并且大部分对象都还有引用, GC不出来可用内存, 这是要给对象 ...

  9. Docker 运行 MongoDB的简单办法

    Docker 运行 MongoDB的简单办法 第一步拉取镜像 docker pull mongo 第二步创建自己的目录 地址 10.24.22.240 创建目录 mkdir /mongodb 第三步 ...

  10. WinSCP和xftp 从Windows 上传到linux服务器时出现中文乱码的解决方案

    1. 日常工作中有需求从Windows的办公机器将文件上传到linux服务器上面进行使用 中文经常出现乱码, 需要处理一下. 这里面主要用到了两个工具 WinSCP还有xftp 两个的原理都是一样的 ...