编写Java程序,使用Set实现不重复添加用户
时间: 2024-01-22 22:20:10 浏览: 73
可以通过 HashSet 类来实现不重复添加用户的功能,代码如下:
```java
import java.util.HashSet;
import java.util.Set;
public class UserSet {
public static void main(String[] args) {
Set<String> users = new HashSet<String>();
users.add("Alice");
users.add("Bob");
users.add("Charlie");
users.add("Alice"); // 添加重复元素
System.out.println(users); // 输出 [Bob, Charlie, Alice],重复元素被自动去重
}
}
```
在上面的代码中,我们创建了一个 HashSet 对象 `users`,并向其中添加了若干个字符串类型的元素。在添加第二个 `"Alice"` 时,由于 Set 集合中不能有重复元素,因此该元素被自动去重。
最后,我们使用 `System.out.println(users)` 输出集合中的所有元素,可以看到重复的 `"Alice"` 已经被去除了。
相关问题
编写java程序,实现消除数组中的重复元素
可以使用Java中的Set集合来实现数组中重复元素的消除。Set集合是不允许重复元素的集合,将数组中的元素添加到Set中即可去除重复元素。以下是示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 2, 4, 1, 5};
Set<Integer> set = new HashSet<>();
for (int i : arr) {
set.add(i);
}
int[] newArr = new int[set.size()];
int index = 0;
for (int i : set) {
newArr[index++] = i;
}
System.out.println(Arrays.toString(newArr));
}
}
```
运行以上代码,输出结果为:
```
[1, 2, 3, 4, 5]
```
可以看到,重复元素已经被成功地消除了。
使用java编写程序,从一文本文件中读取若干行,实现将重复的单词存入一个Set对象中,并不重复的单词存入另一个Set对象中
在Java中,你可以通过以下步骤来实现这个功能:
1. **打开文件并读取内容**:
首先,你需要使用`BufferedReader`或者`Files.lines()`函数来逐行读取文本文件的内容。
```java
import java.io.BufferedReader;
import java.nio.file.Files;
import java.nio.file.Paths;
String[] lines = Files.readAllLines(Paths.get("file.txt"));
```
2. **处理每一行**:
对于每行,你可以分割成单词数组,然后遍历每个单词。这里我们可以使用`split()`方法以空格分隔字符串。
```java
String line;
for (line : lines) {
String[] words = line.split("\\s+");
}
```
3. **使用Set存储不重复的单词**:
`Set`数据结构不允许有重复元素,所以可以直接将单词添加到`HashSet`中,它会自动去除重复。
```java
Set<String> uniqueWords = new HashSet<>();
for (String word : words) {
uniqueWords.add(word);
}
```
4. **存储重复的单词**:
如果你想找出重复的单词,可以创建另一个`LinkedHashSet`,它的插入顺序保持不变,而且不允许重复。如果一个单词已经存在,那就说明它是重复的。
```java
Set<String> duplicateWords = new LinkedHashSet<>(uniqueWords); // 先复制一次
uniqueWords.clear(); // 清理原始集合
uniqueWords.addAll(words); // 再次添加所有单词
duplicatesToRemove = uniqueWords.stream()
.filter(duplicateWords::contains)
.collect(Collectors.toSet()); // 这里得到的是重复的单词,放在一个新的集合里
```
5. **结果检查与输出**:
最后,你可以打印出重复和不重复的单词。
完整示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
public class WordDuplicates {
public static void main(String[] args) {
try (BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"))) {
List<String> allWords = new ArrayList<>();
for (String line; (line = reader.readLine()) != null; ) {
allWords.addAll(Arrays.asList(line.split("\\s+")));
}
Set<String> uniqueWords = new HashSet<>(allWords);
Set<String> duplicateWords = new LinkedHashSet<>(uniqueWords);
uniqueWords.clear();
uniqueWords.addAll(allWords);
System.out.println("Unique Words: " + uniqueWords);
System.out.println("Duplicate Words: " + duplicatesToRemove);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
阅读全文