Collection
add
给定的对象
Collection<String> coll = new ArrayList<>();
add(E e) : 把给定的对象添加到当前集合中 。
addAll(Collection con): 所有元素添加到调用方法的集合对象中
clear() :清空集合中所有的元素。
remove(E e) : 把给定的对象在当前集合中删除。 有相同元素,只能删除一个
contains(Object obj) : 判断当前集合中是否包含给定的对象。
isEmpty() : 判断当前集合是否为空。
int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组中。
## 注意事项
for (int i = 0; i < coll.size(); i++) {
}
Object[] array = coll.toArray();
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
for(集合存储元素的类型 变量名称 : 集合) {
...
}
迭代器
并不是所有的集合都有索引,所以以前使用for+get(索引)的方式遍历集合,就不通用了
所以增加了使用迭代器遍历集合对象 coll.iterator()
获取迭代器接口Iterator的实现类对象it hasNext方法,判断是否具有下一个元素
5.如果有: 迭代器接口Iterator的实现类对象it调用next方法,获取下一个元素并输出
while (it.hasNext()) {
//5.如果有: 迭代器接口Iterator的实现类对象it调用next方法,获取下一个元素并输出
String str = it.next();
System.out.println(str);
System.out.println("姓名: " + stu.getName() + ", 年龄: " + stu.getAge());
}
list
常用实现类ArrayList集合 -------------使用ArrayList集合--------------
ArrayList<数据类型> 集合名称 = new ArrayList<数据类型>();
ArrayList<String> list = new ArrayList<>();
特点:
1.底层数据结构:数组
2.查询快: 元素有索引,元素内存空间连续分析
3.增删慢:
数组长度不可改变
需要频繁创建新数组,拷贝元素,销毁老数组
4.线程不同步,不安全,效率高
常用实现类Vector集合 -------------不使用Vector集合--------------
特点:
1.底层数据结构:数组
2.查询快: 元素有索引,元素内存空间连续分析
3.增删慢:
数组长度不可改变
需要频繁创建新数组,拷贝元素,销毁老数组
4.线程同步,安全,效率低
list特点:
1.有序: 保证存入和取出元素的顺序是一致的
2.有索引: 可以通过索引的方式获取元素
3.可重复: 可以存储相同的元素
List子接口,除了用于父接口的方法外,额外添加与索引相关的方法
add(int index,E element) get(int index) set替换(int index,E element) remove(int index) 移除列表中指定位置的元素,并返回被移除之前的元素。
增删改查: C(增: Create)R(查:Read)U(改: Update)D(删: Delete)
List<String> list = new ArrayList<>();
list.add(new Integer(300));
3.向Collection集合对象coll中添加多个Student对象
coll.add(new Student("张三", 18));
数组
数组定义格式:
数据类型[] 数组名称 = new 数据类型[长度];
int[] arr = new int[3];
```
for(数组存储元素的类型 变量名称 : 数组) {
...
}
1.变量名称不是用来存储数组的索引值的,而是用来存储数组中的每个元素的
2.增强for遍历数组底层使用的是普通for
3.增强for遍历数组时,请不要对数组元素进行增删改的操作,否则出现问题,自己解决
4.增强for遍历数组快捷键:
数组名.for
可变参数
可变参数: 可以变化的参数
注意事项:
1.可变参数的本质就是数组
2.调用方法时,可以传递参数列表,可以传递数组,还可以不传参数
3.方法参数列表中的可变参数,只能定义在参数列表最后
4.方法参数列表中的可变参数只允许有一个
public static void main(String[] args) {
System.out.println(getSum(10, 20, 30, 40));
System.out.println(getSum(new int[]{10, 20, 30, 40}));
}
public static int getSum(int... array) {
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[i];
}
return sum;
}
linkedlist
常用实现类LinkedList集合 -------------使用LinkedList集合--------------
特点:
1.底层数据结构:双向链表
2.增删快: 元素分配不连续的,添加/删除元素,只需要找到位置,再修改对应节点保存地址的地方
3.查询慢:
要么从前向后查,要么从后向前查
4.线程不同步,不安全,效率高
LinkedList集合操作链表头和尾的方法
addFirst: 添加头节点 addLast 添加尾节点
getFirst() :返回此列表的第一个元素。 getLast() :返回此列表的最后一个元素。
removeFirs 删除头节点 removeLast() 删除尾节点
LinkedList<String> linked = new LinkedList<>();
LinkedList集合中可以用来模拟栈结构(先进后出)特点的方法
push(E e) 底层原理: addFirst
pop() 底层原理: removeFirst
LinkedList<String> linked = new LinkedList<>();