集合:集合是Java提供的一种容器,可以用来存储多个数据;

集合与数组的区别:集合的长度是可变的,数组的长度是固定的

         集合中存储的数据必须是引用类型数据;

ArrayList回顾:

public class Person {
private String name;
private int age; public Person() {
super();
}
public Person(String name, int age) {
super();
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 "Person [name=" + name + ", age=" + age + "]";
} }
import java.util.ArrayList;

public class Demo1 {
public static void main(String[] args) {
ArrayList<Integer> arr=new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
arr.add(5);
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));//1 2 3 4 5
}
ArrayList<Person> arr1=new ArrayList<>();
arr1.add(new Person("张三", 18));
arr1.add(new Person("李四", 18));
arr1.add(new Person("王二", 18));
for (int i = 0; i < arr1.size(); i++) {
System.out.println(arr1.get(i));
}
/*
Person [name=张三, age=18]
Person [name=李四, age=18]
Person [name=王二, age=18]*/
System.out.println(arr1.size());//
arr1.clear();//清空集合
System.out.println(arr1.size());//
}
}

collection接口是集合的根接口,研究它应该通过他的实现类

ArrayList集合实现了List接口,List接口继承了Collection接口,因此可以 通过ArrayList研究Collection的部分方法:

import java.util.ArrayList;
import java.util.Collection; public class Demo3 {
public static void main(String[] args) {
fun1();
fun2();
fun3();
} private static void fun3() {
// 删除元素
Collection<String> c=new ArrayList<>();
c.add("abc");
c.add("def");
c.add("ghi");
boolean b=c.remove("abc");
System.out.println(b);//true,看是否删除成功,如果元素不存在,则删除失败,如果有重复元素,则删除第一个
System.out.println(c);//[def, ghi]
} private static void fun2() {
// 得到一个存储对象的数组
Collection<String> c=new ArrayList<>();
c.add("abc");
c.add("defg");
c.add("123");
Object[] obj=c.toArray();
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
/* abc
defg
123*/
} } private static void fun1() {
//利用多态创建Collection类型变量
Collection<String> c=new ArrayList<>();
c.add("abc");//add()方法添加元素
c.add("efg");
boolean b=c.contains("abc");//contains方法,判断集合是否包含某元素,返回布尔类型
System.out.println(b);//true
System.out.println(c.size());////size()方法:集合的大小,存入元素个数
c.clear();//清空集合中元素,集合本身仍然存在,就像抽屉里的东西拿走了,抽屉仍然存在
System.out.println(c.size());//
}
}

迭代器:java有很多的集合,存的方式是不一样的,我们要取出这些元素,可以通过一种通用的方式获得;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class Demo4 {
public static void main(String[] args) {
Collection c=new ArrayList<>();
c.add("abc");
c.add("jfhjkb");
c.add(new Person("张三",18));
//迭代器
Iterator it=c.iterator();
while (it.hasNext()) {
Object obj = (Object) it.next();
System.out.println(obj);
} }
}

增强性for循环:

格式:for(数据类型 变量名:数组或者集合){syso(变量名)}

还以上一个例子为例:

public class Demo4 {
public static void main(String[] args) {
Collection c=new ArrayList<>();
c.add("abc");
c.add("jfhjkb");
c.add(new Person("张三",18));
//增强性for循环
for (Object object : c) {
System.out.println(c);
}
/*[abc, jfhjkb, Person [name=张三, age=18]]
[abc, jfhjkb, Person [name=张三, age=18]]
[abc, jfhjkb, Person [name=张三, age=18]]*/
}
}
04-15 08:01