什么是集合以及集合框架(Collection接口体系)
*什么是集合*
概念:对象的容器,定义了对多个对象进行操作的常用方法,可实现数据存储的功能。
和数组的区别:
(1)数组长度固定,集合的长度是不固定的。
(2)数组可以存储基本数据类型和引用数据类型,集合只能存储引用类型
位置:java.util.* 这个包下面。
小开拓:基本数据类型和引用数据类型
基本数据类型:(8中,小技巧,都是小写字母的)
①整数类型:long、int、short、byte
②浮点类型:float、double
③字符类型:char
④布尔类型:boolean
引用数据类型:(最起码得是大写字母开头的)
类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
例如,String类型就是引用类型。
*Collection接口体系结构*
练习代码
package com.practise;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* collection接口的使用
* 1.添加元素
* 2.删除元素
* 3.遍历元素
* 4.判断
*/
public class Demo01 {
public static void main(String[] args) {
//创建集合
Collection collection = new ArrayList();
// * 1.添加元素
collection.add("apple");
collection.add("bananer");
collection.add("Durian");//表示榴莲
System.out.println("集合大小===="+collection.size());
System.out.println("集合遍历===="+collection);//默认重写的toString方法
// * 2.删除元素
// collection.remove("bananer");
// System.out.println("集合大小===="+collection.size());
// System.out.println("集合遍历===="+collection);
//2.1清空集合中的元素
// collection.clear();
// System.out.println("集合大小===="+collection.size());
// System.out.println("集合遍历===="+collection);
// * 3.遍历元素
/**
* //haNext(); 有没有下一个元素
* //next(); 获取下一个元素
* //remove(); 删除当前元素
*/
System.out.println("=========3.1使用增强for==========");
for (Object o : collection) {
String col1=(String) o;
System.out.println(col1);
}
//迭代器是专门用来遍历集合的一种方式
System.out.println("=========3.2使用iterator迭代器==========");
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
String col2 = (String)iterator.next();
System.out.println(col2);
//java.util.ConcurrentModificationException 并发修改异常,也就是说,再遍历集合的时候,是不能够删除集合中的元素的。
//collection.remove(col2);
//要想在遍历的时候删除集合中的元素可以使用迭代器提供的删除方法进行删除
// iterator.remove();
}
System.out.println("集合大小===="+collection.size());
System.out.println("=========3.3使用普通for循环进行遍历==========");
for (int i = 0; i <collection.size() ; i++) {
System.out.println(((ArrayList) collection).get(i));
}
// * 4.判断
System.out.println(collection.contains("apple"));//判断集合中是否存在该元素
System.out.println(collection.isEmpty());//判断集合是否为空
}
}
运行结果:
集合大小====3
集合遍历====[apple, bananer, Durian]
=========3.1使用增强for==========
apple
bananer
Durian
=========3.2使用iterator迭代器==========
apple
bananer
Durian
集合大小====3
=========3.3使用普通for循环进行遍历==========
apple
bananer
Durian
true
False
练习添加对象
package com.practise;
import java.util.ArrayList;
import java.util.Collection;
/**
* 进一步练习
* collection接口的使用
* 1.添加元素
* 2.删除元素
* 3.遍历元素
* 4.判断
*/
public class Demo02 {
public static void main(String[] args) {
//创建集合
Collection collection = new ArrayList();
Student stu1 = new Student("张三", 18);
Student stu2 = new Student("李四", 19);
Student stu3 = new Student("王五", 20);
// * 1.添加元素
collection.add(stu1);
collection.add(stu2);
collection.add(stu3);
// collection.add(stu3);//ArrayList集合可以添加重复的元素
System.out.println("集合大小===="+collection.size());
System.out.println("集合遍历===="+collection);//默认重写的toString方法
//2.删除元素
// collection.remove(stu1);//这种方法是能删除集合中的元素的
// System.out.println("集合大小===="+collection.size());
// System.out.println("集合遍历===="+collection);//默认重写的toString方法
// collection.remove(new Student("张三", 18));//这种方法是删不掉元素的,注意:我们向集合中添加的元素是添加元素的指针,清除的是集合中该元素的指针,真正的对象是没有删除的,还存在于堆空间
// System.out.println("集合大小===="+collection.size());
// System.out.println("集合遍历===="+collection);//默认重写的toString方法
//3.遍历集合 不管使用哪种方法都是可以的
for (Object o : collection) {
System.out.println((Student)o);
}
//4.判断
System.out.println(collection.contains(stu1));
System.out.println(collection.isEmpty());
}
}
运行结果:
集合大小====3
集合遍历====[Student{name='张三', age=18}, Student{name='李四', age=19}, Student{name='王五', age=20}]
Student{name='张三', age=18}
Student{name='李四', age=19}
Student{name='王五', age=20}
true
false