list map set 的区别

本文深入探讨了Java集合框架的核心概念,包括List、Set、Map等的主要特性和应用场景,并详细解析了不同集合类如ArrayList、HashSet、TreeSet等的工作原理及内部实现。

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

  1. 有人想有可以自动扩展的数组,所以有了List  
  2. 有的人想有没有重复的数组,所以有了set  
  3. 有人想有自动排序的组数,所以有了TreeSet,TreeList,Tree**  

list ,set继承自collection接口,map 没有。

list:元素可以重复,有序的

map:键值对,无序

set:元素不重复,无序

list  : arraylist:非线程,不安全,效率高

linkedlist:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢 

Vector是基于线程安全的,效率低 

map :hashmap:非线程,不安全,效率高,支持null;

HashTable线程安全,低效,不支持null

<span style="font-weight: normal;">boolean add(Object o)      :向集合中加入一个对象的引用   
  
void clear():删除集合中所有的对象,即不再持有这些对象的引用   
  
boolean isEmpty()    :判断集合是否为空   
  
boolean contains(Object o) : 判断集合中是否持有特定对象的引用   
  
Iterartor iterator()  :返回一个Iterator对象,可以用来遍历集合中的元素   
  
boolean remove(Object o) :从集合中删除一个对象的引用   
  
int size()       :返回集合中元素的数目   
  
Object[] toArray()    : 返回一个数组,该数组中包括集合中的所有元素 </span>  

Iterator() 和toArray() 方法都用于集合的所有的元素,前者返回一个Iterator对象,后者返回一个包含集合中所有元素的数组

1.iterator的接口申明

boolean hasNext():是否遍历完
next():返回下一个元素
remove():删除

2.set集合

  • HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快 
  • TreeSet :TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序
Set 的用法:存放的是对象的引用,没有重复对象

Set set=new HashSet();  
 
String s1=new String("hello");  
 
String s2=s1;  
 
String s3=new String("world");  
 
set.add(s1);  
 
set.add(s2);  
 
set.add(s3);  
 
System.out.println(set.size());//打印集合中对象的数目 为 2。 

Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。 

HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。 

TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。 

3.list

  • ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。 
  • LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。
注意:
1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。
2、Set和Collection拥有一模一样的接口。
3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。
5、Map用 put(k,v) / get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。
      HashMap会利用对象的hashCode来快速找到key。
6、Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。
使用values()抽取value序列,将map中的所有values生成一个Collection。
为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值