Java字符串去重
时间: 2023-06-30 18:25:58 浏览: 121
可以使用Set数据结构来实现Java字符串去重,具体代码如下:
```java
String str = "aaabbbccc";
Set<Character> set = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
set.add(str.charAt(i));
}
StringBuilder sb = new StringBuilder();
for (Character c : set) {
sb.append(c);
}
String result = sb.toString(); // 去重后的字符串
```
上述代码中,首先将字符串中的每一个字符添加到Set中,由于Set会自动去重,所以最后Set中只会保留不重复的字符。然后再将Set中的字符按顺序拼接起来,即可得到去重后的字符串。
相关问题
java 字符串去重
在 Java 中,字符串去重可以使用多种方法实现,以下是其中的一些常见方法:
1. **HashSet**:利用 HashSet 的无序、不允许重复的特点,将字符串添加到集合中,最后再将集合转换回字符串数组。示例代码如下:
```java
String str = "aabbcc";
Set<Character> set = new HashSet<>();
for (char c : str.toCharArray()) {
set.add(c);
}
StringBuilder sb = new StringBuilder(set.size());
set.forEach(sb::append);
String uniqueStr = sb.toString();
```
2. **HashMap**:通过创建 HashMap,键(key)为字符,值(value)设为 null。由于 HashMap 内部不允许重复键,所以插入后字符串即已去重。然后再将其转换为 String。示例:
```java
String str = "aabbcc";
HashMap<Character, Boolean> map = new HashMap<>();
String uniqueStr = "";
for (char c : str.toCharArray()) {
if (!map.containsKey(c)) {
uniqueStr += c;
map.put(c, true);
}
}
```
3. **正则表达式**:利用 Java 的 replaceAll 函数替换重复的字符。示例:
```java
String str = "aabbcc";
str = str.replaceAll("\\b\\w+\\b", "$0");
```
上述代码会保留第一个遇到的字符。
java字符串去重工具类
以下是一个基于Java的字符串去重工具类的示例:
```java
import java.util.LinkedHashSet;
import java.util.Set;
public class StringUtil {
/**
* 去重字符串中的重复字符并保持原有顺序
* @param str 待去重的字符串
* @return 去重后的字符串
*/
public static String removeDuplicateChars(String str) {
if (str == null || str.length() < 2) {
return str;
}
Set<Character> set = new LinkedHashSet<>();
for (char c : str.toCharArray()) {
set.add(c);
}
StringBuilder sb = new StringBuilder();
for (Character c : set) {
sb.append(c);
}
return sb.toString();
}
}
```
使用示例:
```java
String str = "hello world";
String result = StringUtil.removeDuplicateChars(str);
System.out.println(result); // 输出: helo wrd
```
该示例使用了LinkedHashSet来保持原有的字符顺序,并且避免了使用StringBuilder来去重字符串中的重复字符的重复操作。
阅读全文