Java6

昨天的补充,对于String类,有方法format可以格式化字符串,即将一个个字符串拼接起来.

 一.集合,集合主要是两组(单列集合,双列集合),collection有两个重要的子接口List set

list的一些常用方法:

得到某一元素:list.get(下标)

 Collection遍历元素方式,1.iterator对象称为迭代器用于遍历Colletion的元素.如何去遍历一个集合:首先肯定是创建集合 Collection **  = new 子类;然后得到**的迭代器(**.iterator)最后使用while循环进行遍历用hasNext()方法

 再次遍历的话要重置迭代器,再得到迭代器即可

2.使用增强for也可以遍历元素 3.使用简单原始的for循环

二.Collection的List接口的子类ArrayList:底层是由数组存储。创建的ArraysList对象容器容量如果初始没有定义容量,第一次扩容就为10,后面依次为前面的1.5倍,如果定义了,后面就是定义了的容量的1.5倍。

List的子类Vector底层扩容机制:如果是无参,默认10,后面进行两倍扩容,如果有参则直接按两倍扩容

List的子类Linklist是以链表的形式进行存储

三.Collection的子类接口set:set接口的实现类的对象(Set接口对象),不能存放重复的元素 .set接口对象存放的数据都是无序的,即添加的顺序和去取出的顺序不一致,但是Set的子类TreeSet是有序的,即用一个比较器进行排序

set的子类接口Hashset实现了set接口。Hashset的底层是hashmap,HashMap的底层是数组加链表加红黑树。

 

 第一次使用hashset他的表table就会扩容到16,临界值就会变为12,当table表使用到12时,就会继续扩容到32,以此类推,当table表扩容到64并且一个链表的元素个数达到8的时候,就会进行树化

Hashset添加元素的方式:先获取元素的hash值,对hash值进行运算,然后得到一个索引,如果该位置没有元素则直接存放,若有元素则要进行equals判断。当内容一样时,要想返回相同的hash值,内容不一样时已链表的形式添加,要重写内容的hashcode和equals方法

四:hashset的子类Linkedhashset底层是一个(结构是hash表和双向链表)LinkedhashMap,添加元素时跟hashset的原则是一样的

五:map接口:Map用于保存key-value,使用实现类Hashmap,HashMap线程不安全,因此不能实现同步,Map中的key不能重复,value可以,key value可以引用任何类型的数据,封装到HashMap$Node对象中,当有相同的key,而value不同时,后一个会等价替换前一个。同时为了方便程序员的遍历,还会创建EntrySet集合,该集合存放的元素类型Entry,而一个entry对象就有key,value(Node结点的内容)。null也可以做key

map的常用方法:

 map的遍历方式:Map map  = new HashMap,第一组:先取出所有的key,通过key取出对应的value(Map有个方法为ketset能够取出key的集合)返回一个Set的编译类型,然后通过增强for或者使用迭代器iterator进行遍历。第二组:把所有的values都取出,map.values 返回所有键值对的value值,然后返回给Set的编译类型,因为Set型是Collection的子类接口,最后使用迭代器或者增强for遍历value值,不能遍历key值。

HashMap的扩容机制和HashSet相同

第三组:通过EntrySet来获取k-v,map.entrySet能返回一个entrySet集合

六.hashmap的实现子类Hashtable,Hashtable的键值都不能为空,使用方法基本和HashMap一样,线程与HashMap相反,是安全的,Hashtable的扩容机制:初始为11,临界值为*0.75,后续扩容为容量大小*2+1。

HashTable的子类properties也用于保存键值对,还用于读取文件。

七.在开发中如何选择集合:

Colection工具类:是一个操作set.list,map等集合的工具类

 Object  max (集合,new Comparator) 返回集合里面最大的元素,同样最小为min,frequency 返回某一元素出现的频率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值