目录
今天查漏补缺
学习新内容
- 单列集合:Collection
- 可重复:List
- ArrayList
- LinkList
- 不可重复:Set
- 可重复:List
- 双列集合:Map
一、ArrayList的补充
1.toArray()将,list转换为数组
从上图可以指定,该方法返回的是一个 Objecr[]
数组
【代码实现】🎉
List<String> names = new ArrayList<>();
names.add("张三");
names.add("李四");
names.add("王五");
names.add("赵六");
names.add("钱七");
Object[] array = names.toArray();
for (Object string : array) {
System.out.println(string.toString());
}
2.addAll(),contain(),clear()
【代码实现】🎉
List<String> names = new ArrayList<>();
names.add("张三");
names.add("李四");
names.add("王五");
names.add("赵六");
names.add("钱七");
List<String> names2 = Arrays.asList("刘德华", "张学友", "郭富城", "黎明");
// 列表的拼接
names.addAll(names2);
System.out.println(names);]
// 清空列表
names.clear();
System.out.println(names.contains("张三")); // true
System.out.println(names.contains("法外狂徒")); // false
3. 使用匿名内部类实现遍历列表
【代码实现】🎉
List<String> names2 = Arrays.asList("刘德华", "张学友", "郭富城", "黎明");
names2.forEach(new Consumer<String>() {
@Override
public void accept(String t) {
System.out.println(t);
}
});
匿名内部类
前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类
本质:是一个继承了该类或者实现了该接口的子类匿名对象
4.✨数组扩容
在jdk8
及其以后,如果初始化ArrayList使用的是无参构造,则默认创建一个{}空数组,长度为0,只有第一次添加元素时,才会进行数组扩容,默认创建一个大小为10的对象数组。
如果再次扩容,大小为:int newCapacity = oldCapacity + (oldCapacity >> 1)
;
也就是为原来大写的1.5倍。
如果new ArrayList的时候,使用的有参的构造,则直接创建大小为10的对象数组。
注意:如果数据是固定的,建议使用有参的构造函数来创建对应个ArrayList
5.面试题:在java中,存在goto吗?
java使用label技术实现C++中goto语法!!!
【代码实现】🎉
found: {
if (o == null) {
for (; i < size; i++) {
if (es[i] == null) {
# break
break found;
}
}
} else {
for (; i < size; i++)
if (o.equals(es[i]))
break found;
}
return false;
}
二、Vector
Vector也是一个动态对象数组,非常像ArrayList,其中的各种方法也和ArrayList类似
需要注意的是,Vector提供的大多数方法,都是被同步锁修饰的方法
言外之意:Vector是一个线程安全类,主要使用的多线程环境下
【代码举例】🎉
Vector初始化容量也是10,需要注意的是,每次扩容会是原有容量的2倍。
三、LinkedList
线性表
注意:ArrayList和Vector底层都是动态数组实现的,而LinkedList是基于双向链表的实现
四、✨ArrayList、Vector和LinkedList的区别?
此处引用了JavaGuide
1.从版本上看,ArrayList和Vector在JDK1.0就诞生了,LinkedList是在JDk1…2才诞生的
2.Arraylist 和 Vector 的区别?
3.Arraylist 与 LinkedList 区别?
五、Set接口(待完善)
特点:
1、不能存在重复数据
2、元素没有顺序(因为使用的hash算法实现的)
3、一旦插入成功,顺序也就固定下来