第五篇学习总结

2020-01-23  本文已影响0人  拼搏男孩

第五篇学习总结

一、StringBuffer与StringBuilder

StringBuffer与StringBuilder是可变的字符串,对这两者的操作都是在对象本身进行改变而不是新创建一个对象。两者有一个区别,前者是先出来的,所以线程安全,效率低,后者是后出来的,所以线程不安全,效率高。

1、常用方法

注:以上方法也适用于StringBuilder

二、基本数据类型的包装类

有时候需要把基本数据类型转换为类,这时就需要用到基本数据类型的包装类了,在Java中两者是自动转换的,称为自动装箱与自动拆箱。

基本数据类型 对应的包装类
byte Byte
short Short
int Integer
long Long
char Character
boolean Boolean
float Float
double Double

从上面可以看出,基本数据类型的包装类大部分都是直接将首字母从小写变成大写,不过有两个例外,int与char。

包装类中有一个很重要的方法可以将字符串转换为对应的数据类型,以Integer为例,Integer.parseInt(String s)可以将字符串转换为基本数据类型int。当然,其他包装类也有相应的方法。

三、其他实用类

1、Random

这个类中有一些生成伪随机数的方法,生成一个a - b(包含a,不包含b的随机数) nextInt(b-a)+a;生成一个a - b(包含a,包含b的随机数) nextInt(b-a+1)+a;

Random random = new Random();
//用于生成伪随机数种子
random.setSeed(1234);
//产生一个0~n-1的随机数
random.nextInt(int n);

四、集合

1、数组与集合

数组的缺陷:长度固定,不够灵活,需要事先确定大小,不能扩展。但是数组不仅能够存储基本数据类型,还能存储引用数据类型。集合比较灵活,不用事先确定大小,但是集合只能存储引用数据类型,存储基本数据类型的时候会自动转换为包装类。

2、集合分类

集合可以分为Collection与Map,前者是单列集合,后者是双列集合,Collection中又可以分为List、Set、Queue。

2.1 Collection集合

Collection是单列集合,用于存储单个元素

常用方法:

2.2 迭代器

Iterator<Student> it = student.iterator();
//调用next方法判断是否有下一个元素
while(it.hasNext()){
    //如果有,获取下一个元素,同时It指向下一个元素
    Student stu = it.next();
    System.out.println(stu);
}

使用迭代器遍历集合的时候,如果对集合进行了修改,下一次循环就会报错,因为迭代器保存的是集合的副本,如果迭代器发现集合副本和原集合修改次数不一样的话就会报错,这时可以使用迭代器的删除方法。

2.3 List集合

List集合是有序的,而且可以储存重复的数据,List集合可以分为三类:ArrayList、LinkedList与Vector,这三类各有各的特点,Vector已经不推荐使用了,因为效率较低。

ArrayList,LinkedList及Vector集合之间的区别:

2.4 Set集合

set集合存放的元素是无序的,而且不能存储重复的元素。根据存储元素的方式不同,可以分为HashSet与TreeSet。

2.4.1 HashSet

HashSet的底层仍然是数组,实际上使用了Map集合的key。通过Hash算法得出一个Hash值,比较是否有相同的,然后算出了一个下标值,然后判断这个下标值上是否有元素,如果有就挂载,本质上创建了一个比较大的数组,然后再放进去,Set集合为我们提供的操作比较少,只有三个方法:add、remove、size。不能遍历,没有查询方法。HashSet实际上是通过元素的hashCode和equals方法来判断的,如果没有重写,引用数据类型比较的是地址值,这是没有意义的。

2.4.2 LinkedHashSet

集合有序的HashSet,先插入的在前面,后插入的在后后面。

2.4.3 TreeSet

TreeSet是元素有序的,大的在右边,小的在左边,底层是一个二叉树。引用数据类型要比较大小必须自己提供比较大小的方法,一种方式是实现Comparable接口并且重写compareTo方法,另一种方式是在newy一个TreeSet的时候,提供一个匿名内部类,这个内部类实现了Comparator接口,重写compare方法。compare方法与compareTo方法如果返回负数,当前元素小于被比较元素,返回0相等,返回正数,当前元素大于被比较元素。

2.5 超级for

超级for是Iterator的简写形式,方便对数组和Collection集合的遍历。普通for循环可以删除元素,需要下标,迭代器可以删除,但是必须使用迭代器自身的remove方法,超级for不能删除。

3、Collections工具类的使用

Collections中有一些方法可以适用于所有Collection集合,下面所有方法都是静态的:

上一篇 下一篇

猜你喜欢

热点阅读