集合
什么是集合?
数组就是集合,集合实际上就是一个容器,可以容纳其他类型的数据。集合是一个容器,是一个载体,可以一次容纳多个对象。实际开发中,Java连接数据库,数据库当中有10条记录,当把这10个数据查询出来,在java中会把这10条数据封装成10Java对象,然后将10个Java对象放到某一个对象当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来。
比如 ,装10个苹果的购物袋,运输物资的飞机就是一个集合。
集合中不能直接存储基本数据类型,集合也不能直接存储Java对象,集合当中存储的都是Java对象的内存地址。
集合和数组的区别
集合的长度是可变的,数组的长度固定
集合中只能是引用的类型,数组中可以是基本数据类型,也可以是引用数据类型。
集合可以存储不同的类型,数组只能存储同一种数据。
java中集合的架构图
Collection集合
集合层次结构中的根界面 。 集合表示一组被称为其元素的对象。 一些集合允许重复元素,而其他集合不允许。 有些被命令和其他无序。 JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set
和List
。 该界面通常用于传递集合,并在需要最大的通用性的情况下对其进行操作。
Collection中常用的方法
Collection方法中用于添加元素的方法
返回值 | 方法名 | 作用 |
---|---|---|
boolean | add(E e) | 确保此集合包含指定的元素(可选操作)。 |
boolean | addAll(Collection c) | 将指定集合中的所有元素添加到此集合(可选操作)。 |
。。。 | 可选操作~ | 。。。 |
案例:
public class Demo {
public static void main(String[] args) {
Collection<String> list = new ArrayList<String>();//容器已经创建好了
list.add("嘻嘻");
list.add("哈哈");
list.add("呵呵");
System.out.println(list); //[嘻嘻,哈哈,呵呵]
Collection<String> list1 = new ArrayList<String>();
list1.add("对的");
list1.add("正确");
list1.add("嘿嘿");
list.addAll(list1);//[嘻嘻,哈哈,呵呵,对的,正确,嘿嘿]
}
}
Collection方法中用于删除元素的方法
返回值 | 方法名 | 作用 |
---|---|---|
void | clear() | 从此集合中删除所有元素(可选操作)。 |
boolean | remove(Object o) | 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 |
boolean | removeAll(Collection c) | 删除指定集合中包含的所有此集合的元素(可选操作)。 |
案例:
public class Demo2 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<String>();//容器已经创建好了
list.add("嘻嘻");
list.add("哈哈");
list.add("呵呵");
System.out.println(list); //[嘻嘻,哈哈,呵呵]
Collection<String> list1 = new ArrayList<String>();
list1.add("对的");
list1.add("正确");
list1.add("嘿嘿");
list.addAll(list1);//[嘻嘻,哈哈,呵呵,对的,正确,嘿嘿]
System.out.println(list.remove("嘻嘻"));//true
//[哈哈,呵呵,对的,正确,嘿嘿]
Collection<String> list3 = new ArrayList<String>();
list3.add("拉拉");
list3.add("哈哈");
list3.add("贴贴");
list.removeAll(list3);
System.out.println(list);////[呵呵,对的,正确,嘿嘿]
// list.clear();
}
}
Collection方法中用于判断,查找,转换元素的方法
返回值 | 方法名 | 作用 |
---|---|---|
boolean | contains(Object o) | 如果此集合包含指定的元素,则返回 true 。 |
boolean | containsAll(Collection c) | 如果此集合包含指定 集合 中的所有元素,则返回true。 |
boolean | equals(Object o) | 将指定的对象与此集合进行比较以获得相等性。 |
boolean | isEmpty() | 如果此集合不包含元素,则返回 true 。 |
int | size() | 返回此集合中的元素数 |
Object[] | toArray() | 返回一个包含此集合中所有元素的数组。 |
案例:
public class Demo3 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<String>();//容器已经创建好了
list.add("嘻嘻");
list.add("哈哈");
list.add("呵呵");
System.out.println(list); //[嘻嘻,哈哈,呵呵]
Collection<String> list1 = new ArrayList<String>();
list1.add("对的");
list1.add("正确");
list1.add("嘿嘿");
list.addAll(list1);//[嘻嘻,哈哈,呵呵,对的,正确,嘿嘿]
System.out.println(list.size());//6
//toArray();
Object[] objects = list.toArray();
System.out.println(objects);//地址
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
System.out.println(list.contains("对的"));//true
System.out.println(list.contains("嘻嘻"));//false
System.out.println(list.isEmpty());//false
}
}
Collection遍利方法
for循环遍利集合
public class Demo2 {
public static void main(String[] args) {
Collection<Integer> list = new ArrayList<>();
list.add(250);
list.add(360);
list.add(470);
list.add(404);
list.add(500);
System.out.println(list);
Object[] objects = list.toArray();
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
}
}
增强for循环遍利集合
语法格式:
for (集合中元素的数据类型 临时变量 : 集合或者数组){
System.out.println(临时变量);
}
public class Demo3 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("嘻嘻");
list.add("嘿嘿");
list.add("哈哈");
list.add("拉拉");
System.out.println(list);
//String s : list
//将list集合 进行迭代,每次取一个值然后赋值给 s
//将list集合中的数据挨个的赋值给s
for (String s : list) {
System.out.println(s);
//嘻嘻
//嘿嘿
//哈哈
//拉拉
}
}
}
迭代器遍利集合
语法格式:
Iterator<T> iterator = 集合的对象的引用.iterator();
While (iterator.hasNext()){
System.out.println(iterator.next());
}
public class Demo3 {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("嘻嘻");
list.add("嘿嘿");
list.add("哈哈");
list.add("拉拉");
Iterator<T> iterator = list.iterator();
While (iterator.hasNext()){
System.out.println(iterator.next());
}
//嘻嘻
//嘿嘿
//哈哈
//拉拉
}
}
注意:
集合中不仅可以存储八大基本数据类型,以及引用数据类型,还有自定义的对象【重点】
案例:
class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Homework2 {
public static void main(String[] args) {
/**
* 二、题目:自定义4个学生对象,添加到集合,并遍历。
* 思路:
*
* 自定义Student学生类,四个部分。
* 创建—个集合,用来存储学生对象。泛型: <Student>
* 根据类,创建4个学生对象。
* 将4个学生对象添加到集合中:add
* 遍历集合:for、 size、get
*/
List<Student> list = new ArrayList<>();
list.add(new Student("张三",18));
list.add(new Student("李四",28));
list.add(new Student("王五",88));
list.add(new Student("赵六",48));
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));//输出创建对象的信息(逐条打印输出)
}
}
}