Java里面的集合

在前面的一节里面,我们看到的就是java的集合,大概的说了下我们的Collection接口。

今天,我们来说下list,也就是我们的列表,分别由个类.ArrayList和LinkList这个实现类.他们都u来自List,因此继承了列表Listde 

的所有功能。

但是这两者之间是由区别的,我们来看看他们的特点

1.首先ArrayList是数组样式的链表,它保存数据是按照数组来进行排列的,是一个线性的结构,每一个元素都有自己的下标

寻找元素十分的容易,直接就是数组名加上下标就可以找到该元素,寻找元素非常的快,数据在计算机拿出里面按照线性来进行排列的。

然而,我们的链表式链表式有点像c++里面的链表,它的每一个的端元由两部分组成,一个式数据,另外一个就是指向下一个链表的地址.他们之间式通过链式指针来实现连接的。由此,我们可以想到的就是,要像咋子链式链表插入数据式非常的容易的,只需要将指针指向另外的一个地址就可以了,非常的简短,但是在遍历数据这块,它的性能不及ArrayList。显然,他是更加的快的。

但是前者插入数据的话,需要做内存空间移动的操作,式非常的麻烦的。

由于ArrayList和LinkList都是List的子类因此都有Listde 所有的方法。但是List继承来自Collection接口,因此会由其父类所有的属性和方法。

下面我们来看看代码吧。

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class list {

	public list() {
		// TODO Auto-g enerated constructor stub
	}

	public static void main(String[] args) {
		Collection test = new ArrayList();
		test.add(123);
		test.add("hello world");
		test.add("jack");
		test.add(new Object());
		ArrayList a = new ArrayList();
		a.add(123);
		System.out.println(a);
		System.out.println(a.size());
		System.out.println(a.hashCode());
		a.remove(0);
		System.out.println(a);

	}

}

代码很简单那,这里就饿不咋多说了。

 

### 去重方法概述 对于Java中的集合去重操作,存在多种方式来实现这一目标。当面对简单的对象列表并希望去除其中的重复项时,可以采用`HashSet`来进行处理[^1]。 ```java // 使用HashSet进行简单去重 List<String> listWithDuplicates = Arrays.asList("apple", "banana", "orange", "apple"); Set<String> setWithoutDuplicates = new HashSet<>(listWithDuplicates); ``` 如果需要基于对象的特定字段执行更复杂的去重逻辑,则可以通过Stream API结合自定义比较器完成此任务[^2]。 ```java import java.util.*; import java.util.stream.Collectors; class Employee { private String id; private String name; public Employee(String id, String name) { this.id = id; this.name = name; } @Override public boolean equals(Object o){ if (this == o) return true; if (!(o instanceof Employee)) return false; Employee employee = (Employee) o; return Objects.equals(id, employee.id); } @Override public int hashCode(){ return Objects.hash(id); } } public class Main { public static void main(String[] args) { List<Employee> employees = Arrays.asList( new Employee("001","Alice"), new Employee("002","Bob"), new Employee("001","Charlie") // Duplicate ID with different names. ); Map<String, Employee> uniqueEmployeesById = employees.stream() .collect(Collectors.toMap(Employee::getId, e -> e,(existing, replacement) -> existing)); List<Employee> result = new ArrayList<>(uniqueEmployeesById.values()); System.out.println(result.toString()); } } ``` 另外一种情况是在不改变原有数据结构的前提下获取唯一元素组成的列表,此时可借助于LinkedHashMap保留插入顺序的同时达到去重的效果[^4]。 ```java // 利用LinkedHashMap保持原始顺序并移除重复条目 List<Integer> numbers = Arrays.asList(1, 2, 3, 2, 4, 5, 3); LinkedHashMap<Integer, Void> map = new LinkedHashMap<>(); for(Integer num : numbers){ map.put(num,null); } numbers.clear(); numbers.addAll(map.keySet()); System.out.println(numbers); // 输出:[1, 2, 3, 4, 5] ``` 以上展示了三种不同场景下的Java集合去重方案,每种都有其适用范围和特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值