集合

集合

数组:长度不可变
集合:长度可变

1.集合类概述:
Collection是集合框架的父接口
子接口:List 和 Set
List常用的实现类:ArrayList和LinkedList
Set常用的实现类:HashSet和TreeSet

继承关系:
java.util:

Map
HashMap
TreeMap
Collection
Set & List
HashSet TreeSet & ArrayList LinkedList

2.list集合
特点:有序,可以有重复元素

ArrayList:
具有数组结构的List集合,有下标,可以通过下标增添或删除集合中的元素,长度可改变,增添和删除都不需要手动扩容和缩容
LinkedList:
双向链表结构,无下标

List常用方法:
ArrayList:add() 将制定项目添加到列表末尾
	   add(String str , int index) 将内容增添到指定位置
	   remove(int index) 指定位置移除
	   remove(String str) 第一次出现的位置移除
	   removeAll() 删除所有内容
	   replaceItem(String str , int index) 替换指定位置
	   size() 取长度
	   get(int index) 获取指定位置的元素
LinkedList:getFirst() 获取头元素
	    element() 获取头元素
	    getLast() 获取尾元素
	    poll() 获取元素并删除头节点
	    remove() 无参时代表删除头节点

3.Set集合:
List:有序可重复
Set:无需不可重复

Set是接口,无法直接创建对象,需通过实现类来创建对象
1》HashMap(散列集合):
Set set = new HashSet();
HashSet set = new HashSet();
2》TreeSet(存放有序):
不能添加null值,如果调用compareTo()方法,会出现空指针异常

注意:要想指定集合的存放顺序,被排序的对象需要实现接口Compareble并实现CompareTo方法

HashSet保证元素的唯一性的比较原理:
当比较两个对象是否一样时,首先比较两个对象的hashcode值,如果hashcode值相同再调用equals方 法进行比较。如果equals比较返回true就判定这两个对象相同。如果hashcode值不相同,就直接判定 两个对象不相同,不会再调用equals方法

Set遍历集合:

 //迭代器遍历集合       
  //1.根据集合获取集合对应的迭代器        
	  Iterator iterator = set.iterator();        
  //2.判断是否有下一个元素,如果有就返回true并且执行循环,如果没有,说明已经取到迭代器末尾        
	  while (iterator.hasNext()) {            
	  //3.取出光标后面的元素,next()取出下一个元素            
	  Object obj = iterator.next();            
	  System.out.println(obj);       
 	 }   

4.Map集合:Map<key , value>
特点:无序
注意:一个键对应一个值,不能有重复的键
Map是一个接口,无法直接创建对象,需实现类来创建
常用实现类:HaspMap TreeMap
常用方法:put(key , value) 存入Map
get(key) 通过键获取值
containsKey(key)查找是否包含该键
containValue(value) 查找是否包含该值

遍历Map集合:

 //遍历map集合<key,value>        
 //获取主键集合        
 Set set = map.keySet();                
 System.out.println("====foreach====");        
 for (Object object:set) {
//System.out.println(object);            
System.out.println("<"+object+","+map.get(object)+">");        }        
System.out.println("====迭代器遍历====");       
 Iterator iterator = set.iterator();        
while(iterator.hasNext()) {            
	Object object = iterator.next(); //         
	System.out.println(object);            
	System.out.println("<"+object+","+map.get(object)+">");        
	}        
  //entrySet()遍历       
  //此种方式是先将map集合中的key和value整体放入set集合中,相当于将map集合转换成了set集合        
System.out.println("====entrySet()====");        
Set set1 = map.entrySet();//将map集合转换成了set集合       
Iterator it = set1.iterator();       
 while(it.hasNext()) {          
      Map.Entry entry = (Entry) it.next();            
      System.out.println("<"+entry.getKey()+","+entry.getValue()+">");        
      } 
      

5.Collection 和 Collections 的区别
Collection:父接口
Collections:操作集合类的工具,封装了一些对集合操作的方法

Collections方法:
.sort(list) 排序
.shuffle(list) 打乱
.max(list) 求集合中的最大值
.min(list)求集合中的最小值
.replaceAll(list , value , index) 替换

6.自定义比较器:
》Comparator:接口,无法直接创建对象
(1)实现一个比较器类来实现接口
(2)实现compare方法

》Comparable:将实体类创建的对象具有可比较性
(1)在实体类上实现comparable接口
(2)实现CompareTo()方法 (后面一般会指定泛型)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值