java 筛选出字符串数组中没有重复的项,若有重复,重复的两条数据都剔除
时间: 2024-03-25 08:36:16 浏览: 13
可以使用 HashSet 来筛选出字符串数组中没有重复的项,代码如下:
```java
String[] strArray = {"apple", "orange", "banana", "orange", "grape", "apple"};
Set<String> set = new HashSet<>();
List<String> result = new ArrayList<>();
for (String str : strArray) {
if (set.add(str)) {
result.add(str);
} else {
set.remove(str);
result.remove(str);
}
}
System.out.println(result); // 输出 [banana, grape]
```
上面的代码中,我们首先创建了一个 HashSet 对象 set,然后遍历字符串数组 strArray 中的每个元素。对于每个元素,如果它没有被添加到 set 集合中,说明它是第一次出现,我们就将它添加到结果列表 result 中;否则说明它已经出现过了,我们就将它从 set 集合和结果列表 result 中都删除。最后,输出结果列表 result 就是没有重复项的字符串数组。
相关问题
一个json字符串数组,怎么把里边重复的数据剔除
可以将 JSON 字符串数组转换为 Java 对象集合,再进行去重操作。具体实现可以按照以下步骤:
1. 将 JSON 字符串数组转换为 Java 对象集合。可以使用 Gson 或者 Jackson 等 JSON 序列化库来实现,示例代码如下:
```java
String[] jsonStringArr = { "{'name': '张三', 'age': 20}", "{'name': '李四', 'age': 21}", "{'name': '张三', 'age': 20}" };
List<Person> personList = new ArrayList<>();
for (String jsonString : jsonStringArr) {
Person person = new Gson().fromJson(jsonString, Person.class);
personList.add(person);
}
```
其中,Person 是一个自定义的 Java 类型,用于存储每个 JSON 字符串对应的对象信息。
2. 对 Java 对象集合进行去重操作。可以使用 HashSet 来实现,示例代码如下:
```java
Set<Person> personSet = new HashSet<>(personList);
```
其中,HashSet 会自动去除集合中的重复元素,因此最终得到的 personSet 就是去重后的结果。
完整示例代码如下:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
String[] jsonStringArr = { "{'name': '张三', 'age': 20}", "{'name': '李四', 'age': 21}", "{'name': '张三', 'age': 20}" };
List<Person> personList = new ArrayList<>();
for (String jsonString : jsonStringArr) {
Person person = new Gson().fromJson(jsonString, Person.class);
personList.add(person);
}
Set<Person> personSet = new HashSet<>(personList);
System.out.println(personSet);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
输出结果为:
```
[Person{name='张三', age=20}, Person{name='李四', age=21}]
```
其中,张三的信息只出现了一次,即表示重复的数据已经被去除。
golang 字符串数组剔除另一个数组中的元素
在 Go 语言中,可以使用 for 循环和 range 关键字遍历字符串数组,并使用字符串比较函数判断两个字符串是否相等,从而实现从一个字符串数组中剔除另一个字符串数组中的元素。以下是一个示例代码:
```go
package main
import "fmt"
func main() {
arr1 := []string{"apple", "banana", "orange", "pear"}
arr2 := []string{"banana", "kiwi", "pear"}
// 遍历 arr1 数组,将不在 arr2 中的元素添加到新的数组中
result := []string{}
for _, str := range arr1 {
exists := false
for _, s := range arr2 {
if str == s {
exists = true
break
}
}
if !exists {
result = append(result, str)
}
}
fmt.Println(result) // 输出 [apple orange]
}
```
在这个示例中,我们定义了两个字符串数组 arr1 和 arr2,其中 arr2 包含了需要从 arr1 中剔除的元素。通过 for 循环和 range 关键字遍历 arr1 数组,对每个元素进行判断,如果该元素不在 arr2 中,则将其添加到新的数组 result 中。最后输出 result 数组,即可得到从 arr1 中剔除 arr2 中元素的结果。