遍历HashSet中的每一个字符串
时间: 2024-01-21 14:17:02 浏览: 28
可以使用for-each循环遍历HashSet中的每一个字符串,示例如下:
```java
Set<String> set = new HashSet<>();
set.add("hello");
set.add("world");
set.add("java");
for (String str : set) {
System.out.println(str);
}
```
输出结果为:
```
hello
world
java
```
使用for-each循环遍历HashSet中的每一个元素,代码简洁、易于理解,并且不需要手动维护游标。
相关问题
用Java如何让两个线程调用同一个方法,遍历出字符串中不同的字符
在Java中,可以通过使用两个线程来同时调用同一个方法,并遍历出字符串中的不同字符。下面是一个示例代码,演示了如何实现这个功能:
```java
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
String str = "Hello, World!";
Set<Character> uniqueChars = new HashSet<>();
Thread t1 = new Thread(() -> {
for (char c : str.toCharArray()) {
synchronized (uniqueChars) {
if (!uniqueChars.contains(c)) {
uniqueChars.add(c);
System.out.println("Thread 1: Found unique character: " + c);
}
}
}
});
Thread t2 = new Thread(() -> {
for (char c : str.toCharArray()) {
synchronized (uniqueChars) {
if (!uniqueChars.contains(c)) {
uniqueChars.add(c);
System.out.println("Thread 2: Found unique character: " + c);
}
}
}
});
t1.start();
t2.start();
}
}
```
在这个例子中,我们创建了两个线程(t1和t2),它们同时遍历给定的字符串(str)。每个线程都使用一个`Set`(uniqueChars)来存储已经遇到的字符。
在遍历过程中,我们使用`synchronized`关键字来确保两个线程不会同时修改`uniqueChars`集合。这样可以防止竞态条件(race condition)和数据不一致的问题。
每当一个线程发现一个不同的字符时,它会将它添加到`uniqueChars`集合中,并打印出相应的消息。
请注意,由于线程的执行顺序是不确定的,因此输出的顺序可能会有所不同。但是,最终的结果应该是包含了字符串中所有不同字符的集合。
java去除字符串里面的重复字符保留一个
在Java中,可以使用HashSet来去除字符串中的重复字符并保留一个。具体步骤如下:
1. 创建一个StringBuilder对象,用于保存去除重复字符后的字符串。
2. 创建一个HashSet对象,用于存储已经遍历过的字符。
3. 遍历原始字符串中的每个字符:
- 若该字符已经存在于HashSet中,则说明该字符已经出现过,直接跳过。
- 若该字符不存在于HashSet中,则将其添加到HashSet并追加到StringBuilder对象中。
4. 最后,将StringBuilder对象转换为String对象,并返回结果即可。
下面是相应的Java代码实现:
```java
public class Main {
public static void main(String[] args) {
String str = "aabbccddeeffgghhii";
String result = removeDuplicates(str);
System.out.println(result);
}
public static String removeDuplicates(String str) {
StringBuilder sb = new StringBuilder();
HashSet<Character> set = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!set.contains(c)) {
set.add(c);
sb.append(c);
}
}
return sb.toString();
}
}
```
运行上述代码,输出结果为:"abcdefghi"。由此可见,经过去除重复字符保留一个的处理,原始字符串中的重复字符被成功去除。