Java里面的集合

及那天来聊聊java的 集合。首先我们来想一个问题,数组真的好用吗???答案是否定的,为什么这么说,我们从一下几个

方面去分析,

1.首先数组的长度一旦固定的话,是不能改变的。在计算机里面的内存大小就固定了。

2.数组的灵活性比较差。

3.数组的性能比较低下。在一般的存储小型的数据的时候还是比较可以,但是,存储较大的数据的时候,是性能是比较底下的

今天,我们来介绍下一个动态的存储数据的接口,就是我们的集合,集合一般有三个,就是我们的键值对map,集合set,以及链表list。其中链表和set都有一个共同的父类的接口就是我们的Collection  也就是Collection是他们的父类,Collection提供的方法,他们是都有的.比如 add,remove 方法等等,下面我们来看看具体的代码。Collection是javautil包下面的,因此,也要导入java的这个包

下面我们来看看几个简短的例子.还是来看看代码吧.

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo1 {

	public Demo1() {
		// TODO Auto-generated constructor stub
		//今天来看看java的集合的思想。
		//解决了数组的弊端,实现动态的数组.
		//主要学习键值对map,集合set,以及列表list
		//其中list和set由共同的父类就是Collection接口。
		//collection提供了很多的方法。
	}
	public static void main(String[] args) {
		Collection c=new ArrayList();
		System.out.println("集合的长度是否为空"+c.isEmpty());	
		c.add("你好");
		c.add(3.14);
		c.add(new Object());
		System.out.println("集合是否为空"+c.isEmpty()+c.size());
		
		
		//创建一个迭代器
		Iterator test=c.iterator();
		while(test.hasNext()) {
			Object data=test.next(); 
			System.out.println(data);
		}
		
	}

}

 

代码非常的简短,有点基础的,都能看懂,但是要注意的一点就是即使这段代码Iterator test=c.iterator();,

创建 一个迭代器,那么什么是迭代了,所谓的迭代,所谓的迭代就是重复的从某一个容器里面拿出东西,反复的执行这个

过程。我们称之为迭代。我们把反复的从里面拿出东西的容器称之为迭代器

调用接口对象的iterator方法就会返回一个迭代器。迭代器哟u非常多的方法,比如程序里面的,在这里,就不多介绍了

大家可以去看看java的Api

 

### 去重方法概述 对于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、付费专栏及课程。

余额充值