20191205学习总结

集合

数组集合长度

ArrayList 数组集合数组长度固定,集合长度可变。数组长度: 数组名.length属性集合长度:集合名.size()方法。list.get(下标)通过集合下标来获取数组中的每一个值。

增删改差

集合的删除

针对非int类型e.g.:list.remove("aaa")针对int类型,传入int类型会默认下标。如果删除int类型的值,必须使用封装类。e.g.:List.remove(new Interger(111))

集合的添加

list.add(添加值)添加不能超出原来集合的最大长度。ArrayList添加,可以添加重复的数据。

查找集合中的某个值

返回指定数据第一次被查找到在集合中的下标。

list.indexOf(); 从前往后查list:lastIndexOf(); 从后往前查

查找是否有

list.contains() 返回布尔值,找到是true,没找到是false。

判断集合是否为空

list.isEmpty(); 返回布尔值,找到是true,没找到是false。list.size(0); 返回布尔值,找到是true,没找到是false。

清空集合所有的元素

list.clear() 之后size为0。

ArrayList、Vector、Stack的区别

ArrayList:没有考虑线程问题,在一些算法上做了优化,速度更快,效率更高。Vector:线程是安全的(已经不用了)。Stack:线程是安全的(已经不用了)。

这三个底层都是数组的实现。

链表LinkList

LinkList与ArrayList的区别

1.ArrayList底层是数组的实现,LinkedList底层是链表的实现。1.1 在java中链表就是自己实现了一个类,在类中记录了前一个和后一个的地址。每次查找都需要找到前一个或者后一个才能往前或者往后找到。2.ArrayList查找速度快,但是删除和插入的速度慢。3.LinkedList删除和插入的速度快,但是查询速度较慢。4.LinkedList有自己独有的addFirst addLast removeLast removeFirst的方法。

List接口下的特点

1.都是有序的(按照添加的顺序获取)。2.都有下标。3.可以重复。

增强for循环(foreach循环)遍历集合

格式:for(元素的数据类型 变量 : Collection集合or数组){

}

for(Object obj : set) {
System.out.println(obj);
}

迭代器

Iterator it = set.iterator();
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}

set接口下的集合特点

1.没有下标2.无序的3.不能重复(覆盖)

List接口和set接口的区别

1.有无下标。2.有无序。3.能否重复。

泛型

集合需申明泛型,基本数据类型的泛型集合必须使用包装类。

TreeSet

TreeSet用的很少,是有序的TreeSet要求放入进去的对象必须实现Comparable接口。并且实现Comparable接口的CompareTo方法。

Set对List的转换

List < > lists = new ArrayList<>();

Collection和Collections的区别

collection:接口。collections:实现类或者工具类。

Comparable和Comparator的区别

Comparable:在java.lang下,必须要实现comparaTo()方法,一个参数。一般用实体类去直接实现comparable接口。Comparator:在java.util下,必须实现compare()方法,两个参数。需要另外一个类或内部类来实现这个接口。