JavaSE学习_13_list_set_map

来源:互联网 发布:同花顺软件k线图 编辑:程序博客网 时间:2024/06/17 13:16
1、list(有序可重复)
API!!
list接口常见实现类:
 1)ArrayList:底层用数组实现,线程不安全,相对linkedList-->修改,读取效率高,删除,插入效率低
 2)LinkedList:底层用双向链表实现,线程不安全,相对ArrayList-->修改,读取效率低,删除,插入效率高
 3)Vector:底层用数组实现,线程安全,相对ArrayList-->效率低


list容器的遍历:
1)普通for
2)迭代器(容器的管理员):作用,就是用来把容器的所有元素遍历
遍历步骤
a)通过容器拿到管理者,iterator()
b)循环遍历-->while
1)管理者->有没有下一个元素,boolean hasNext(),有返回true,没有返回false 
  2)管理者->拿出下一个元素next() 

3)增强for


2、set(无序不可重复)
API!!
1)HashSet:底层是hashmap实现的(哈希表)
2)TreeSet:底层是treemap实现的(树),可以对容器的元素自动排序(性能不好)
 通常情况下-->hashset性能比treeSet好
 一般使用-->hashset
set的遍历,没有下标:
1)增强for-->利用iterable
2)迭代器-->利用Iterator
要注意删除元素是对象的时候要在对象对应的类里面重写hashCode和equals方法,默认调用Object的比较的是地址,删除不了

3、map
API!!
map的各种实现类: 
 HashMap:底层单向链表加数组实现,线程不安全
 Hashtable:底层单向链表加数组实现,线程安全,【键和值都不能为null】
 Properties:继承于Hashtable,要求【键和值】必须是【String类型】,
  通常用来和Properties文件进行交互(读取文件内容,写内容到文件)
 TreeMap:底层是红黑树,加入到map的元素自动排序。性能比  HashMap差
map的三种遍历:
一种遍历值,只需要map容器的所有值
values
后面两种遍历键和值,需要map容器的所有键和值
keySet2
entrySet(里面存的是键值对)
0 0