HashSet 打印成字符串数组显示
时间: 2023-08-16 07:07:41 浏览: 96
你可以使用 HashSet 的 toArray() 方法将其转换为一个 Object 类型的数组,然后再将其转换为一个字符串类型的数组。这里是一个示例代码:
```java
import java.util.HashSet;
public class HashSetToStringArray {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("apple");
set.add("banana");
set.add("orange");
Object[] objArray = set.toArray();
String[] strArray = new String[objArray.length];
for (int i = 0; i < objArray.length; i++) {
strArray[i] = objArray[i].toString();
}
for (String str : strArray) {
System.out.println(str);
}
}
}
```
输出结果为:
```
apple
banana
orange
```
相关问题
改进全排列程序,对于有重复数据的数组,对输出结果进行排重。 如对数组[1,2,3,4,3,6],结果中有重复输出的部分只显示一次。C语言
为了改进全排列程序以处理包含重复元素的数组并避免输出重复的结果,你可以使用哈希集合(HashSet或HashMap)来跟踪已经生成的组合。以下是C语言的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
typedef struct {
int data;
bool is_used; // 标记元素是否已被使用过
} UniqueElement;
void permute(int* arr, int start, UniqueElement* unique_set, int size) {
if (start == size) {
// 将当前组合转换成字符串,并检查是否已存在哈希集合中
char* combination = malloc(sizeof(char) * (ARRAY_SIZE(arr) * 5)); // 预计每个数最多5位
for (int i = 0; i < size; i++) {
snprintf(combination + i * 5, 5, "%d", arr[i]);
}
if (!strcmp(combination, unique_set[size - 1].data)) { // 如果未找到重复,则添加到集合并打印
free(combination);
return;
} else {
// 存在重复,直接返回不打印
free(combination);
return;
}
}
for (int i = start; i < size; i++) {
// 使用元素前将其标记为已使用
unique_set[start].is_used = true;
arr[start] = arr[i]; // 交换位置
permute(arr, start + 1, unique_set, size); // 递归调用
// 恢复状态,继续下一次循环
arr[start] = arr[i];
unique_set[start].is_used = false;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 3, 6};
int size = ARRAY_SIZE(arr);
UniqueElement unique_set[size];
for (int i = 0; i < size; i++) {
unique_set[i].data = NULL;
unique_set[i].is_used = false;
}
permute(arr, 0, unique_set, size);
return 0;
}
```
这个版本的全排列函数首先将每个元素标记为已使用,然后递归地生成所有可能的组合。如果遇到重复的组合,它会跳过剩余的递归步骤并回到上一层。最后,在`main`函数中,我们创建了一个`UniqueElement`结构体数组来存储唯一组合的信息。
若有则输出该相同的字符并结束程序否则输出no
如果你想在Java中检查一个字符串是否包含重复的字符,并在找到重复字符后立即停止程序并输出该字符,你可以使用如下的方法:
```java
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
String input = "example"; // 输入的字符串
char[] chars = input.toCharArray(); // 转换为字符数组便于操作
HashSet<Character> uniqueChars = new HashSet<>(); // 存储唯一字符
for (char c : chars) {
if (uniqueChars.contains(c)) {
System.out.printf("找到重复的字符:%c\n", c);
break; // 找到重复就跳出循环
} else {
uniqueChars.add(c);
}
}
if (!uniqueChars.containsAll(chars)) {
System.out.println("no"); // 没有重复字符时输出
}
}
}
```
在这个程序中,我们首先将字符串转换为字符数组,然后使用一个HashSet来存储唯一的字符。当我们发现某个字符已经在集合中,意味着它是重复的,此时我们会打印出该字符并使用`break`退出循环。最后,如果没有所有的字符都在集合里,那么意味着没有重复,我们就输出"No"。
运行此程序时,如果你输入的字符串存在重复字符,它会立刻显示第一个重复的字符并结束。如果没有重复,会输出"No"。
阅读全文