集合Collection和Map

本文详细介绍了Java集合框架的三大核心接口:Collection、Set和Map,包括它们的主要实现类如ArrayList、LinkedList、HashSet、HashMap等,并提供了遍历这些集合的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Collection层级结构


Collection集合是所有集合的顶级,是所有集合的父接口。
集合:是用来保存一组数据的数据结构,定义了所有集合都应该包含的特征和行为。
派生出List接口和Set接口。

List接口

List接口:元素 可重复且有序
ArrayList:内部由一个数组实现,在需要的时候对数组进行扩容,索引数据快而插入数据慢,性能好,线程不安全,适合随机访问
Vector:与ArrayList类似,但是线程安全,性能较差
LinkedList:使用双向链表结构实现存储,按序号索引数据需向前后遍历,插入数据时只需记录本项的前后即可,插入速度快,更适合插入和删除(堆栈和队列)

遍历List

package testCollection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//遍历list
public class TraverseList {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("a");
		list.add("b");
		list.add("c");
		
		
		System.out.println("方法一:迭代遍历+for");
		for(Iterator iterator = list.iterator();iterator.hasNext();){
			System.out.println(iterator.next());
		}
		
		System.out.println("方法二:迭代遍历");
		Iterator iterator = list.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
		
		System.out.println("方法三:增强型for循环");
		for(String s:list){
			System.out.println(s);
		}
		
		System.out.println("方法四:for循环");
		for(int i=0; i<list.size();i++){
			System.out.println(list.get(i));
		}
	}
}


Set接口

Set接口:元素 不可重复且无序(equals为false,最多有一个null元素)
HashSet:按照HashCode(散列算法实现),快速查找
TreeSet:二叉树算法实现,可从Set中提取有序的序列

遍历Set

package testCollection;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class TraverseSet {
	public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
	    set.add("AAA");
	    set.add("BBB");
	    set.add("CCC");
	    
	    System.out.println("方法一:迭代遍历");
	    Iterator iterator = set.iterator();
	    while(iterator.hasNext()){
	    	System.out.println(iterator.next());
	    }
	    
	    System.out.println("方法二:增强型for循环");
	    for(String s:set){
	    	System.out.println(s);
	    }
	}
}

Map层次结构


Map存储数据结构使用key-value键值对的形式存储数据,存储的数据 无序
对于map,要求 key必须唯一,value可以重复
获取数据时,使用key可获取对应的value

HashMap:内部为hash表实现,允许null键值key,线程不安全,null可作为key或者value,通过hashcode对其内容进行快速查找,排序不固定
TreeMap:元素固定顺序,用TreeMap得到一个有序的结果,二叉树算法实现
HashTable:hash/rehash算法实现,线程安全,被HashMap代替

HashMap和HashTable的区别:
HashMap是HashTable的轻量级实现(非线程安全的实现),都实现了Map接口,采用的hash/rehash算法都大概一样,所以性能差异不是很大
区别:
1、历史原因:HashTable是基于陈旧的Dictionary类,而HashMap是java1.2引进的Map接口的一个实现
2、同步性:HashTable是线程安全的,即同步的,但是效率低;而HashMap是县城不安全的,不是同步的,效率高
3、值:只有HashMap可以让你将一个null作为key或者value

遍历Map

package testCollection;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class TraverseMap {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("11", "aaa");
		map.put("22", "bbb");
		map.put("33", "ccc");
		
		System.out.println("方法一:获取所有的key---keySet()");
		Set<String> setKey = map.keySet();
		Iterator iteratorKey = setKey.iterator();
		while(iteratorKey.hasNext()){
			System.out.println(map.get(iteratorKey.next()));
		}
		
		System.out.println("方法二:获取所有的value---values()");
		for(String s:map.values()){
			System.out.println(s);
		}
		
		System.out.println("*方法三:通过Map.entrySet遍历key和value");
		for(Entry<String, String> entry:map.entrySet()){
			System.out.println("key="+entry.getKey()+", value="+entry.getValue());
		}
		
		
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值