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 ...
随机推荐
- [转帖]MySQL 官方出品,比 mydumper 更快的多线程逻辑备份工具-MySQL Shell Dump & Load
MySQL 官方出品,比 mydumper 更快的多线程逻辑备份工具-MySQL Shell Dump & Load - 知乎 (zhihu.com) 目录 收起 什么是 MySQL Sh ...
- [转帖]【JVM】JVM概述
1.JVM定义 JVM 是Java Virtual Machine(JVM )的缩写,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令进行执行,这样实现了Java"一次编译, ...
- [转贴]一图弄懂ASCII、GB2312、GBK、GB18030编码
一图弄懂ASCII.GB2312.GBK.GB18030编码 https://blog.csdn.net/LightUpHeaven/article/details/92008630 转载君子不器. ...
- dispaly结合背景图片会提升加载性能
1.display的常见现象 我们很多人都知道,display可以让元素实现隐藏或者显示. 或者让行级元素变成块级元素. 对它的认识也是比较准确的. 如果一个元素使用了display:none; 那么 ...
- axios发送请求时携带token
请求头携带token async getUserlist(){ // 需要授权的Api,必须在青丘头中使用Authorization 字段提供token令牌 const AUTH_TOKEN=loca ...
- P5963 [BalticOI ?] Card 卡牌游戏【来源请求】
[rt](https://www.luogu.com.cn/problem/P5963)------------## part1### 题意简述给你 $n$ 张纸牌,每张纸牌有两个面.将 $n$ 张纸 ...
- PicoPixel贴图查看器
Pico Pixel Pico Pixel是一款纹理查看器,支持查看以下文件格式:TGA,BMP,JPG,DDS,PNG,OpenEXR, KTX, HDR, GIF, TIF. 此外,Pico Pi ...
- @RequestBody中使用@DateTimeFormat报错:JSON parse error: Expected array or string.; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException
原因分析 根据异常提示:不匹配输入异常,指输入的参数错误,说是只支持String类型和Array数组类型的. @PostMapping("/test") public Dto ge ...
- druid和druid-spring-boot-starter区别,以及springboot项目中提示报错Cannot resolve configuration property 'spring.datasource.xxxx' 和hikari配置属性
一.druid和druid-spring-boot-starter区别分析 作用是一样的,都是连接池提供连接,里边的配置参数都是一样的: druid-spring-boot-starter只是在dru ...
- 深入探索OCR技术:前沿算法与工业级部署方案揭秘
深入探索OCR技术:前沿算法与工业级部署方案揭秘 注:以上图片来自网络 1. OCR技术背景 1.1 OCR技术的应用场景 OCR是什么 OCR(Optical Character Recogniti ...