将一个字符串转换成无重复的有序列表,方法很多,但步骤应该主要就是先转换成String数组,再去重,最后转换成有序列表。
而其实每步都有很多种方式,如去重可以直接用for循环,也可以用hashSet,当然如果用treeSet去重并排序,一步到位实现了,代码相当简洁。
String[] strs = str.split(","); List<String> arlList = Arrays.asList(strs); TreeSet treeSet = new TreeSet(arlList); System.out.println(treeSet);
当然,如果treeSet默认排序达不到要求,可以实现compare方法,实现排序逻辑。实例代码如下所示:
package com.bijian.study; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; /** * 用Java集合实现将一个字符串转换成无重复的有序列表 * 1.采用分隔符将字符串转换成String数组 * 2.去重 * a.treeSet去重并排序(一步到位),如果默认排序达不到要求,可以实现compare方法,实现排序逻辑 * b.hashSet去重 * 3.转换成有序列表,用Collections.sort排序 */ public class CollectionDemo { private final static String str = "张三,李四,王五,张三,李国中,陈小小,李新大,王五,王五,刘大姐,bijian,zhangshan,lisi"; public static void processMethod0() { String[] strs = str.split(","); List<String> arlList = Arrays.asList(strs); TreeSet treeSet = new TreeSet(arlList); System.out.println(treeSet);//[bijian, lisi, zhangshan, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小] } public static void processMethod1() { String[] strs = str.split(","); List<String> arlList = Arrays.asList(strs); //TreeSet treeSet = new TreeSet(arlList); TreeSet<String> treeSet = new TreeSet<String>(arlList){ public int compare(String str1, String str2) { return str1.compareTo(str2); } }; List<String> resList = new ArrayList<String>(); resList.addAll(treeSet); System.out.println(resList);//[bijian, lisi, zhangshan, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小] } public static void processMethod2() { String[] strs = str.split(","); List<String> arlList = Arrays.asList(strs); Set<String> hashSet = new HashSet<String>(arlList); /* 将Set集合转为List,这样获得的list并不能有序排列*/ List<String> resList = new ArrayList<String>(hashSet); /*将list有序排列*/ Collections.sort(resList, new Comparator<String>() { public int compare(String str1, String str2) { return str1.compareTo(str2); } }); System.out.println(resList);//[bijian, lisi, zhangshan, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小] } public static void main(String[] args) { System.out.println("processMethod0:"); processMethod0(); System.out.println("processMethod1:"); processMethod1(); System.out.println("processMethod2:"); processMethod2(); } }
运行结果:
processMethod0: [bijian, lisi, zhangshan, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小] processMethod1: [bijian, lisi, zhangshan, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小] processMethod2: [bijian, lisi, zhangshan, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小]
相关推荐
答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新的对象,StringBuffer是可变的字符序列,所以如果要经常改变某个字符串的话建议使用StringBuffer。 list、set、map问题? 答:set 不允许...
角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。 系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色: CONNECT...
leetcode双人赛Java 中的 Leetcode 解决方案 1 二和 2 两个数相加 3 无重复字符的最长子串 4 两个有序数组的中位数 5 最长回文子串 6 之字形转换 7 反转整数 8 字符串到整数 (atoi) 9 回文数 10 正则表达式匹配 11 ...
【基础】一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制? 30 【基础】Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 30 【基础】Java 中的final关键字有哪些用法?...
无重复字符的最长子串 4 寻找两个正序数组的中位数 7 整数反转 9 回文数 13 罗马数字转整数 14 最长公共前缀 15 三数之和 16 最接近的三数之和 20 有效的括号 21 合并两个有序链表 26 删除排序数组中的重复项 27 ...
字符串到整数 (atoi) 14 最长公共前缀20 个有效括号28 实现 strStr() 43 乘法字符串 二分查找 列表/链表 19 从列表末尾删除第 N 个节点21 合并两个排序列表24个交换节点对27 删除元素61 轮换名单 树 排序 4 两个有序...
字符串转换整数 (atoi) 中等 盛最多水的容器 中等 罗马数字转整数 简单 0014 最长公共前缀 简单 三数之和 中等 0020 有效的括号 简单 0021 合并两个有序链表 简单 0026 删除排序数组中的重复项 简单 0027 移除元素 ...
字符串到整数 (atoi) 中等的 Ruby 9. 回文数 简单的 Python 3 10. 正则表达式匹配 难的 Java 11. 盛水最多的容器 中等的 C++ 12. 整数转罗马 中等的 Python2 13. 罗马到整数 简单的 C 14. 最长公共前缀 简单的 ...
字符串到整数 (atoi) 9 回文数 10 正则表达式匹配 11 盛水最多的容器 12 整数转罗马 13 罗马到整数 14 最长公共前缀 15 3总和 16 3和最近 17 电话号码的字母组合 18 4总和 19 从列表末尾删除第 N 个节点 20 有效括号...
字符串转换整数(atoi) 中等 C++ 11 盛最多水的容器 中等 C++ 双指针法 :star: 15 三数之和 中等 C++ 17 电话号码的字母组合 中等 C++ 19 删除链表的倒数第N个节点 中等 C++ 20 有效的括号 简单 C++ 21 合并两个有序...
字符串转换整数 盛水最多得容器 括号生成 搜索旋转排序数组 全排列 跳跃游戏 合并区间 LRU缓存机制 翻转字符串里的单词 二叉树的右视图 岛屿数量 数字范围按位与 生命游戏 设计推特 水壶问题 两数相加II 01矩阵 单词...
P1两数之和P2两数相加P3无重复字符的最长子串P4寻找两个正序整数的中位数P5最长回文子串P6 Z字形变换P7整数反转P8字符串转换整体(atoi) P9回文数P11盛最多水的容器P12整体转罗马数字P13罗马数字转整数P14最高公共...
字符串转换整数 (atoi) #8 回文数 #9 *正则表达式匹配 #10 回溯 dp 盛最多水的容器 #11 整数转罗马数字 #12 罗马数字转整数 #13 最长公共前缀 #14 *三数之和 #15 双指针 最接近的三数之和 #16 电话号码的字母组合 #...
LeetCode LeetCode编程题集第二题:两数相加中等第三题:无重复字符的最长子串中等第四题:寻找两个有序分段的中位数困难第五题:最长回文子串中等第六题:Z字形变换中等第七题:二次反转简单第八题:字符串转换整体...
字符串到整数 (atoi) 中等的 9 回文数 简单的 11 盛水最多的容器 中等的 12 整数转罗马 中等的 13 罗马到整数 简单的 14 最长公共前缀 简单的 15 3总和 中等的 16 3和最近 中等的 17 电话号码的字母组合 中等的 18 4...
字符串转整数 9 回文数 10 正则表达式匹配 11 盛水最多的容器 ///// 12 整数转罗马 13 罗马转整数 14 最长公共前缀 //// 15 3总和 //// 16 3和最近 //// 17 电话号码的字母组合 18 4总和 /// 19 从列表末尾删除第 N ...
字符串转换整数 (atoi) - 0009 回文数 - 0011 盛最多水的容器 - 0013 罗马数字转整数 - 0014 最长公共前缀 - 0015 三数之和 - 0017 电话号码的字母组合 - 0019 删除链表的倒数第N个节点 - 0020 有效的括号 - 0021 ...
字符串到整数(atoi) 回文数 装满水的容器 整数到罗马 罗马到整数 最长的公共前缀 3和 3Sum最近 电话号码的字母组合 4和 从列表末尾删除第N个节点 有效括号 合并两个排序列表 产生括号 成对交换节点 k组中的反向...
字符串转换整数 Java Easy 字符串 3 只出现一次的数字 Java Easy 数组 4 Solution 合并两个有序数组 Java Easy 排序和搜索 5 删除排序数组中的重复项 Java Easy 数组 6 存在重复元素 Java Easy 数组 No Title Title2...
字符串到整数 (atoi) 13.5% 简单的 9 回文数 31.5% 简单的 10 正则表达式匹配 21.9% 难的 11 盛水最多的容器 34.4% 中等的 12 整数转罗马 38.6% 中等的 13 罗马到整数 39.1% 简单的 14 最长公共前缀 28.0% 简单的 15...