Day13-15知识点总结:
1.StringBuffer和StringBuilder
(1)是一个可变的字符序列
(2)其实就是一个可以改变长度的存放字符串的容器
(3)增 : append insert
(4)删 : deleteCharAt delete
(5)改 : setCharAt replace
(6)查 : charAt indexOf
总结:StringBuffer相对而言线程安全,但效率低,StringBuilder相对而言线程不安全,效率高
2.基本数据类型的包装类
(1)用于基本数据类型和字符串之间的转换:
String str = "100";
int num = Integer.parseInt(str);
System.out.println(num*5); //结果: 500
总结:基本数据类型自身没有方法, 这样就限制了我们的使用, 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据.
3.Random(随机方法)
nextInt()
nextInt(b-a+1) +a (a-b 都包含)
nextInt(b-a) +a (a-b b包含)
总结:Random类可以用来获取随机数
4.集合
ArrayList 底层数组 增删慢 查改块
LinkedList底层链表 增删块 查改慢
这里的增指的是 插入 , 实际上如果是尾部添加, ArrayList反而更块
总结:ArrayList和LinkedList各有优势,在使用时可以根据使用情况选择适合的list集合
5.ArrayList集合的嵌套
类似于二维数组
6.Set
(1)特点:去重,无序(集合无序)
(2)HashSet:去重效率高, 尤其是在大数据量下,调用元素的hashCode和equals方法来比较是否相同
(3)LinkedHashSet:即有序(集合有序), 又能去重,效率不高
(4)TreeSet:去重, 元素有序(对存入的元素进行排序);要求存入的元素必须具备比较的能力或者提供第三方的比较器;元素具备比较的能力 : 元素实现comperable接口, 重写comparTo方法;第三方比较器: 定义类,实现Compartor接口, 从写 compare方法
(5)超级for:迭代器的简写形式
优点: 格式简单
缺点: 无法进行删除操作
总结:Set集合主要作用是去重,而且元素无序,没有角标,只能通过迭代器去遍历集合中的元素.
7.Collections
(1)一个用来操作List集合的工具类
(2)常用方法:
sort(List<T> list) 根据元素的自然顺序排序
swap(List<T> list , int i , int j) 交换集合中两个角标位上的值
reverse(List<?> list ) 反转集合中的元素的顺序
replaceAll(List<T> list, T oldVal, T newVal) 替换
总结:Collections适用于操作list集合的一种工具类,可以对list集合做一些常用的操作,省时效率高.
8.Map集合
(1)定义:双列集合 一次性存两个值(key-value)
key-value : 键值对 映射
(2)特性:key不能重复, value可以重复
(3)Map集合的方法:map集合的方法都是用来操作key的
put(key)
remove(key) clear
get(key)
(4)map集合的遍历:map集合没有自身的遍历方法, 要先转成set
keySet():获取所有的key
values() : 获取所有的value
entrySet() : 获取所有的键值对
(5)HashMap
底层是数组
存储时,通过key算出一个角标值, 如果当前位置上有元素, 就比较一下
如果对比成功, 覆盖值
如果没有成功, 挂载
如果当前位置上没有元素, 直接存储
hashMap是如何判断是否重复的 key的地址值和hashCode和equals方法
(5)TreeMap
底层是红黑树(二叉树)
key可以排序
新元素要和老元素比较, 根据返回的结果判断存储的位置,参考TreeSet
(6)HashSet和TreeSet底层用的HashMap和TreeMap
其实就是将Set集合的元素当成Map集合的key
总结:map集合是一个双列集合,通过键值对的形式将数据存储起来,遍历map集合时需要将map集合转化为set集合进行遍历.
9.泛型
(1)设一个不是具体类型的类型
(2)好处
提高代码的兼容性
提高安全性,将运行期的错误提前到编译期
省去强转的麻烦
在一定范围统一类型
(3)泛型可以定义的地方
接口, 类, 方法