ArrayList,LinkedList;TreeSet ,HashSet ,Map 集合知识的基础理解。

ArrayList 一般用于查询,底层长度可变的数组,每次改变都会创建新的数组,效率低,线程非安全。

 LinkedList 采用双向链表的方式,进行数据增删,效率大于AarrayList 。

 常用方法

   add()  将元素添加到列表中。

   contains()  确定某个队列是否在队列当中。

remove (  ) 将某一个对象的引用传递给remove 方法,即移除某一对象。

 indexOf () 持一个对象的引用,可获得在列表中的下表位置。

subList () 从大的列表中创出一个新的片段。

retainAall() 是一种有效的交集操作。

 removeAall () 移除List 中的所有元素。

get()  取得指定的索引位置。

LinkedList 有上面的方法,并且多出一下几个方法。

getFirst() 返回列表第一个元素而不移除。

peek()  同上

removeFirst() ,poll( ) 移除并返回列表头。


底层结构的区别:

ArrayList  底层是数组,每次数据增长的时候会COPY 一个新的数组,并扩充1.5倍。

LinkedList 底层是双向链表实现的,由两个指针操作,可以快速进行增删操作,但是数据不宜过头,每次添加都创建一个节点对象。


Set 接口:

    HashSet : 查询快,存入元素时必须重写hashCode( ) 方法。依赖与HashMap() ,比较原则 , 先比较哈希值,再判断是否equals( )

TreeSet  : 保持元素处于排序状态,底层为树结构,可以从Set中提取有序的序列,但元素必须实现Comparable接口,依赖于TreeMap 实现。

LinkedHashSet : 以插入的顺序保持元素,迭代器遍历时会按照插入时的顺序显示,但也必须定义hashCode() 方法。  (通过哈希值来确定元素位置,同时通过链表来维护元素的次序)

TreeSet 一般,默认为自然排序,在TreeSet 集合中新添加元素时,会调用新的元素的CompartTO( ) 方法与集合中元素进行比较。 

   升序: this.变量.compareTo( obj.变量); this在前,形参引用在后 

  降序反之:

  返回-1,新元素在集合元素的左边,为 1 在右边, 为0 时表示添加失败。

如果TreeSet 集合中添加自定义类必须重写,cpmpareTo(Object obj ) 方法,实现Compareable 接口。

  定制排序:  TreeSet 绑定一个比较器,比较器是一个接口 Comparator() 

  通过构造方法绑定,重写Compare( object o1,Object  o2)方法。  



Map接口: 

   键值对象映射存储,键不能重复,值可以重复。

  1. HasMap 底层是哈希表存储,hash存在与线性表中,链表相结合,每张表头就是hash 地址值。

 2. LinkedHashMap 是hashMap 的子类,双向链表维护键值对的顺序。

 3. TreeMap 底层采用红黑树结构,对存储的Key-Value 的节点进行排序,保证处于有序状态,自然排序,Comparable 重写CompareTo()方法排序,如果key值是自定义类对象,需让自定义类实现Comparable 接口重写CompareTo( )   定制排序: 绑定比较器Comparator( ) 

 当在集合中添加键值对时,生成的是一个Entry对象。

  Set<Map.Entry<String,Integer>> eset = map.entrySet( );

   获取宇哥存放键值对类型【集合中的内部类Entry 】 的集合。

  常用方法:

  map.get(" key")       根据Key 获取value 值

  map.ContainsKey() 判断集合中是否包含某个value 值

map.isEntry( ) 判断是否有键值对,是否为空集合。

Set <?> keySet = map.Set( )  获取存放key 值对应的集合。

Collection <? > c = map.Values( ); 获取存放Value 值的集合. 


刚入门学习的小白,如有错误还请多多指教哈。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值