`

Java实现将一个字符串转换成无重复的有序列表

阅读更多

        将一个字符串转换成无重复的有序列表,方法很多,但步骤应该主要就是先转换成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, 刘大姐, 张三, 李四, 李国中, 李新大, 王五, 陈小小]

 

0
3
分享到:
评论

相关推荐

    Java字符串逗号分割实现.pptx.pptx

    通过这些方法,我们可以根据实际需求灵活地处理字符串,无论是简单的逗号分隔,还是复杂的正则表达式分割,都能有效地将字符串转换为列表,方便后续的数据处理和分析。在实际开发中,理解并熟练运用这些技巧能够极大...

    10亿个字符串的排序问题

    本文将围绕“10亿个字符串的排序问题”这一主题展开,结合提供的链接资源,探讨如何解决大规模字符串排序的问题。 在处理海量数据时,传统的排序算法如快速排序、归并排序等可能不再适用,因为它们的内存需求较高或...

    java jsonarray 踢重 去重操作

    在Java中处理JSON数据时,经常需要对JSON数组进行各种操作,其中去重是一个常见的需求。本文将详细介绍如何使用Java对`JSONArray`进行去重操作,并深入探讨背后的原理和技术细节。 ### JSON与Java JSON...

    Java和Redis实现一个简单的热搜功能

    虽然在提供的代码片段中没有具体实现,但通常会创建一个 DFA 状态机,用于高效地检查输入字符串是否包含不雅词汇。 5. 文字过滤功能: - 在 Java 代码中,定义了一个 `BAD_WORDS` 变量,用于存储需要过滤的关键词...

    一个简单的JAVA作业

    这里使用了字符串的`toUpperCase`和`toLowerCase`方法来分别将字符串中的第一个和第二个字符转换成大写和小写形式。 ### 3. 字符串拼接与格式化 #### 3.1 字符串拼接 ```java StringBuffer sb = new StringBuffer()...

    Java求字符串中出现次数最多的字符串以及出现次数

    在这个例子中,我们将输入字符串转换为字符数组,并将每个字符添加到`TreeSet`中。这样,我们得到了所有不重复的字符集合。 接下来,我们利用`ArrayList`来存储这些字符,并使用`Collections.sort()`方法对其进行...

    java在线列表

    Java有Gson、Jackson、Fastjson等库用于JSON的序列化和反序列化,将Java对象转换为JSON字符串,以便在网络中传递。 10. **Web框架集成**: 如Spring MVC、Struts2等Java Web框架提供了处理在线列表的便捷方式。例如...

    java 生成有序账号的实现方法

    这是通过使用`String.valueOf()`方法将整数转换为字符串,并检查其长度来实现的。根据长度,代码设置了不同的前导零数量: ```java for (int i = 0; i ; i++) { if (String.valueOf(i + 1).length() == 1) { ...

    java学习笔记

    3. **字符串连接**:使用`+`操作符连接字符串实际上会创建一个新的字符串对象,因为字符串是不可变的。 4. **字符串实例化**: - 直接赋值形式:字符串被存放在常量池中,如果字符串已经存在于常量池,则不再创建...

    java常用操作代码

    使用正则表达式[^0-9]匹配非数字字符,然后使用Pattern和Matcher删除这些字符,最后通过Integer.parseInt()将处理后的字符串转换为整数。 了解这些基本概念和方法,有助于编写高效、正确的Java代码。在实际开发中,...

    Java语言开发相关单词

    `List`接口是一个有序的集合,可以包含重复元素。它支持按位置索引元素,提供了添加、删除和搜索元素的方法。 ### 集合转数组:`list.toArray()` `list.toArray()`方法用于将`List`转换为数组。它返回一个包含列表...

    JAVA的基础培训知识点

    - `toLowerCase()` 和 `toUpperCase()`:分别将字符串转换为小写和大写。 注意,`==` 在比较字符串时是基于引用比较,而 `.equals()` 方法则是基于内容比较。 2. **集合类**: - **List**:有序且可包含重复元素...

    Java标准类库PDF

    这些包装类提供了一些有用的方法来处理相应的数据类型,比如将字符串转换为相应的基本类型或者获取字符串表示形式等。 #### 三、`java.lang`包中的其他重要类 - **Object**: 所有类的基类,提供了一些基本的方法,...

    Java基于Redis实现附近的人Demo

    这种技术将二维坐标转化为一维字符串,相邻的坐标会被编码为相似的字符串,从而可以快速找到邻近的用户。在Redis中,可以利用有序集合的特性,通过成员的分数范围查询来找到附近的用户。 4. **性能优化**:考虑到大...

    2014黑马程序员JAVA基础测试题

    因此,需要先将字符串转换为GBK编码的字节数组,然后根据字节数截取,确保截取的长度是字节的偶数,且不包含中文字符的半个部分。截取后,可以再转换回字符串。 以上是Java编程的一些基础知识点,涵盖了字符串操作...

    java20道非常经典的编程题

    - 判断一个整数是否为回文,可以将数字转换为字符串后处理。 这些题目涵盖了数组、链表、栈、队列、树、字符串、递归、动态规划、贪心、二分查找等多种算法和数据结构,对于提升Java编程能力具有极大的帮助。通过...

    Java刷算法题常用API文档

    在Java集合框架中,List 是一个有序的集合,可以包含重复的元素。`ArrayList` 是基于动态数组实现的 List 接口的实例。List 提供了 `add()`, `get()`, `remove()`, `size()` 等方法来操作列表。`Collections` 类提供...

    一线互联网大厂完整Java面试题.pdf

    1. Redis的数据结构丰富,包括字符串、列表、集合、有序集合等,支持持久化、集群和事务功能。 2. ZooKeeper的使用场景包括分布式锁、配置管理、分布式协调等,选举算法是其核心功能之一。 Java数据库编程知识点: ...

    实例14列表(java新手绝对实例)

    ` 创建了一个存储字符串的ArrayList。 6. **方法的使用**: 通过调用如`myList.add("Element");` 添加元素,`myList.get(0);` 获取第一个元素,`myList.remove(1);` 移除第二个元素,以及`myList.contains(...

    浅谈常用字符串与集合类转换的工具类

    首先,`MyStringUtils`类提供了一个方法`parseParameterList(String values)`,用于将字符串转换为`Set&lt;String&gt;`类型。这个方法使用正则表达式`"[\\s+]"`来匹配任意空白字符作为分隔符,然后通过`split()`函数将字符...

Global site tag (gtag.js) - Google Analytics