今日任务:
1.了解数组和集合的区别
2.集合Collection的认识和遍历等基本操作
3.ArrayList集合
内容:
一.数组和集合的各自特点和区别
1.特点
数组和集合的各自特点
2.区别
- 相同点:
数组和集合类同是容器。
- 不同点 :
1.数组的长度是固定的,集合的长度是可变的。
2.数组只能存储同类型的对象,集合可以存储不同类型的对象。
3.集合只能存储对象不能存储基本类型
二.集合的基本认识
1、集合的基本认识:如StringBuffer&StringBuilder是集合(存储的对象类型是String)。数组、对象与其很相似,但是还有区别。
2、集合的由来:对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就需要使用集合来进行存储。
3、集合的特点:
(1)用于存储对象的容器;即集合中存储的元素是对象
(2)集合的长度是可变的;
(3)集合是不可以存储基本数据类型的;(集合存储基本数据类型时会先进行自动封装成其对应的对象后再进行存储)
(4)集合两大体系:链表List、集合Set
List特点:元素有序;元素可以重复;元素都有索引(角标)
Set 特点:元素无序;元素不可以重复;
List特有的常见方法:有一个共性就是可以操作角标。
4.基本操作:
- 添加元素
- 删除元素
- 获取元素个数
- 判断是否包含一个元素
- 判断是否为空
- 判断两个集合是否相同(比较内容)
- 清空集合
// 添加元素
Collection<String> t1 = new ArrayList();
t1.add("Jack");
t1.add("Marry");
//删除元素
t1.remove("Jack");
//获取元素个数
System.out.println(t1.size());
//判断是否包含一个元素
if (t1.contains("Marry")) {
System.out.println("有Marry");
} else {
System.out.println("没有Marry");
}
//判断是否为空
if (t1.isEmpty()) {
System.out.println("是空的");
}
//判断两个集合是否相同(比较内容)
Collection<String> t2 = new ArrayList<>();
t2.add("Marry");
t2.add("Jack");
t2.add("Rose");
t2.add("Tom");
if (t1.equals(t2)) {
System.out.println("相同");
} else {
System.out.println("不相同");
}
//清空
t1.clear();
5.集合的遍历
- Iterator遍历
- for-each 增强的for循环 快速循环
- for-i循环遍历
Collection<String> t2 = new ArrayList<>();
t2.add("Marry");
t2.add("Jack");
t2.add("John");
t2.add("Mia");
//Iterator遍历
Iterator iterator = t2.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
while (iterator.next() != null){
System.out.println(iterator.next());
}
//for-each 增强的for循环 快速循环
for (String obj:t2){
System.out.println(obj);
}
//for-i循环遍历
for (int i = 0; i < t2.size(); i++){
System.out.println(((ArrayList<String>) t2).get(i));
}
三.ArrayList集合
注:ArrayList中的<>只能存放对象,不能存放基本数据类型。如果要用,使用包装类
如:ArrayList<int> 改为 ArrayList<Integer>
操作:
- 在末尾添加元素
- 在指定位置添加元素
- 访问指定元素
- 修改一个元素
- 删除指定位置元素
- 删除指定对象
- 清空集合
ArrayList<Integer> score = new ArrayList<>();
//在末尾添加元素
score.add(3);
//在指定位置添加元素
score.add(0,1);
//访问指定元素
score.get(1);
//修改一个元素
score.set(0,0);
//删除指定位置的元素
score.remove(0);
System.out.println(score);
//删除指定的对象
score.remove((Integer)2);
System.out.println(score);
//清空集合
score.clear();