Java中如何按指定字符位置对ArrayList字符串元素排序
按指定字符位置规则排序字符串类型ArrayList
排序规则(以字符C为例)
- 第一优先级:字符C出现在单词开头,排在队列最前
- 第二优先级:字符C出现在单词中间位置,排在中间顺位
- 第三优先级:字符C出现在单词末尾,排在队列最后
测试用例说明:初始列表添加元素
doctor、basic、car,预期排序结果为 car(C开头)、doctor(C在中间)、basic(C在末尾)
实现代码
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class CustomSortDemo { public static void main(String[] args) { List<String> strList = new ArrayList<String>(); strList.add("doctor"); strList.add("basic"); strList.add("car"); // 定义排序参照的目标字符 char target = 'c'; // 自定义比较器按规则排序 strList.sort(Comparator.comparingInt(item -> { String lowerItem = item.toLowerCase(); int charIndex = lowerItem.indexOf(target); int len = lowerItem.length(); if (charIndex == 0) { return 0; } if (charIndex == len - 1) { return 2; } return 1; })); // 打印排序结果 System.out.println(strList); } }
运行结果
代码执行后输出为[car, doctor, basic],完全符合预期排序逻辑。如果需要更换参照字符,只需要修改target变量的赋值即可。
内容的提问来源于stack exchange,提问作者CBRrider
相关产品推荐
相关产品推荐

