集合(Set、List、Map)

本文详细介绍了Java集合框架中数组、集合的基本概念与使用方法,包括List、Set、Map的主要实现类及其特性。对比了不同集合类在存储方式、查询效率等方面的差异,并提供了线程安全的解决方案。

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

1.数组和集合

数组是用来存储相同数据类型(基本类型,引用类型)的一组数据。

集合不能存储基本类型的数据,只能存储对象。

数组和集合可以通过toArray()、Arrays.asList()相互转换

2.Collection接口:表示集合(有两个重要的子接口List,Set)

         遍历Collection的每一个元素,用到Iterator接口(有hasNext()、next()、remove()方法)

   Collections:集合类    封装了一些操作方法

3.

Set接口(add()、get()、contains()、iterator())

都是线程不安全的,解决办法:Set set=Collections.synchronizedSet(new HashSet());

java.util.concurrent里有线程安全的方法,如copyAndWriterArrayList()

HashSet(哈希表来保证元素的唯一性)等值查询效率高------>无序、不重复

Treeset(红黑树算法) 范围查询效率高, 通过实现Comparable接口,重写compareTo()方法实现自然排序------>无序、不重复

                                     通过new Comparator对象,重写compare()方法实现定制排序

LInkedHashSet是HashSet的子类,(LinkedHashSet有链表算法)------>有序、不重复

List(add()、get()、contains()、iterator())

ArrayList:底层是变长数组(查询快)

LinkedList:底层是链表(随机插入、删除快)

Map (put()、get()、containsKey())

Map map=Collections.synchronizedMap(new HashMap());

HahMap:key和value都允许为null

TreeMap:key不可为null,value可为null

HashTable:key和value都不允许为null,线程安全的(所有方法被synchronized修饰)

LinkedHashMap:HashMap的子类

4.Set、List集合可以相互转换

           Set set=new HashSet(list);

           List list=new ArrayList(set);

可以将Map间接转换为Set、List

           Set set=map.keySet();

            List list=map.values();

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值