需求 : ArrayList有以下元素: "a","f","b","c","a","d" 对ArrayList集合去重 * 不允许使用 Set 集合 (因为是明天学的东西)
时间: 2023-09-05 22:08:41 浏览: 58
可以使用另一个ArrayList来存储去重后的元素,然后遍历原始ArrayList,将未出现过的元素添加到新的ArrayList中。
代码示例:
```
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("f");
list.add("b");
list.add("c");
list.add("a");
list.add("d");
ArrayList<String> newList = new ArrayList<>();
for (String element : list) {
if (!newList.contains(element)) {
newList.add(element);
}
}
System.out.println(newList);
```
输出结果为:[a, f, b, c, d]
相关问题
list集合不用set去重
在Java中,如果你想要在List集合中去重,使用Set并不是最佳选择,因为Set不允许重复元素,而List允许有重复元素。不过,你可以采用其他方式:
1. **循环遍历**: 可以创建一个新的List,然后遍历原List,对于每个元素,如果不在新List中则添加进去。这种方法适用于元素不是复杂结构且性能要求不高的情况。
```java
List<String> uniqueList = new ArrayList<>();
for (String item : originalList) {
if (!uniqueList.contains(item)) {
uniqueList.add(item);
}
}
```
2. **流API**: 如果你在Java 8及以上版本,可以使用流的distinct()方法,但需要注意的是这会创建一个新的流并返回,不会改变原有列表。
```java
List<String> distinctList = originalList.stream()
.distinct()
.collect(Collectors.toList());
```
3. **自定义比较逻辑**: 对于复杂类型的对象,你可能需要创建一个equals()和hashCode()方法的实现来进行去重。例如,如果一个Person对象由姓名和年龄构成,你需要基于这两个属性确定是否重复。
```java
List<Person> uniquePeople = originalPeople.stream()
.distinct(Comparator.comparing(Person::getNameAndAge))
.collect(Collectors.toList());
```
ArrayList数组去重
可以使用Java中的Set集合来实现ArrayList数组去重。具体步骤如下:
1. 创建一个新的HashSet集合,用于存放不重复的元素。
2. 使用addAll()方法将原始的ArrayList数组中的元素添加到HashSet集合中。
3. 创建一个新的ArrayList集合,用于存放去重后的元素。
4. 使用addAll()方法将HashSet集合中的元素添加到新的ArrayList集合中。
5. 返回新的ArrayList集合。
示例代码如下:
```java
import java.util.ArrayList;
import java.util.HashSet;
public class ArrayListRemoveDuplicate {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(1);
list.add(2);
ArrayList<Integer> newList = removeDuplicate(list);
System.out.println(newList);
}
public static ArrayList<Integer> removeDuplicate(ArrayList<Integer> list) {
HashSet<Integer> set = new HashSet<>(list);
ArrayList<Integer> newList = new ArrayList<>(set);
return newList;
}
}
```
输出结果为:[1, 2, 3]。
阅读全文