ArrayList
HashMap
泛型循环
泛型
集合:同一类事物放在一起组成了集合。(引用数据类型,这是和数组最大的区别。)
集合:Collection(接口)父类是Iteraable(接口:功能是集合的迭代遍历)
集合的分类:
1.List(接口):有序可重复:常见的实现类:ArrauList(数组实现) LinkendList(链表实现)
2.Set(接口):无序不重复:HashSet(哈希实现)TreeSet(二叉树实现)
ArrayList:实现了LIst接口(List继承了Collection接口)
补充:一个类实现了一个接口那么我们就要重写接口里的抽象方法,也就是说,接口里的方法大家都有。
集合里的方法:主要是增删改查。
ArrayList书写格式:ArrayList <>放的就是泛型,知道就是集合里面放入的数据类型。
泛型的好处:省去了从集合中取出数据时的强制类型转换。
Object:所有类的父类
加了泛型,就会要求我们放入数据的时候,只能放入该数据类型的数据,那么取出来的时候也是该类型。
泛型是引用数据类型。
ArrayList:
1.底层是数组(Object[])
2.ArrayLIst 元素个数 是size()
3.增(添加): add(元素)
4.删:remove(元素):删除第一个出现的元素
remove(索引):删除指定位置的元素
5.改:set(索引、元素)
6.查:get(索引)
7.底层是数组:数组的长度和size不是一回事。如果size()小于数组长度,直接将元素放到数据里面。如果size()等于数组长度,会自动扩容。
8.ArrayList和inkedList的区别:
1.底层数据结构不同 数组 链表
2.ArrayList底层是数组,查询快,增删慢。
3.LinkedLisd查询慢,增删快。
hashSet:无序(没有索引) 不重复(可以去重)
for和foreach的区别:
1.for可以操作索引,但是语法结构复杂
2.foreach不可以操作索引,但是语法结构简单
3.去重:HashSet开发用的比较少,一般集合都是用ArrayList,默写场合也用ArrayList去重,可以使用HashSet。
HashMap:
-
面试题:HashSet和HashTable的区别:
1.HashSet是线程不安全的但效率高,允许null值,HashTable反之。
<K、V> k:键 V:值 键唯一,值可重复。
2.jdk8 HashMap底层是:数组+链表(超过8链表变为红黑树,红黑树长度小于6,红黑树就会变成链表)+红黑树
(1)HashMap负载因子:0.75(元素个数超过数组长度的0.75,就会扩容两倍长度)
(2.)HashMap初始值16 -
个人笔记:
size【统计个数】 name.size keyset()方法 就是把hasmap 里面的键拿出来 再声明变量把键存进去 -
增强循环(来自day10-StaffTest):
for (Staff a : staff) { if (a.getMoney() < 12000){ staff.remove(a); } }