一、数组和集合类同是容器,有何不同?
- 数组虽然也可以存储对象,但长度是固定的。
- 集合长度是可变的。
- 数组中可以存储基本数据类型,集合只能存储对象类型(类类型)。
二、集合类的特点
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
不使用集合写代码:用数组写,就非常的繁琐。
package MONA.demo01_集合引入;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
//数组的长度不可变
Student[] ss = new Student[3];
ss[0] = new Student("张三");
ss[1] = new Student("李四");
ss[2] = new Student("王五");
System.out.println(Arrays.toString(ss));
//错误ArrayIndexOutOfBoundsException
//ss[3] = new Student("田七");
//对数组进行扩容
int[] arr = new int[10];
}
}
class Student{
String name;
public Student(String name) {
this.name = name;
}
@Override
public String toString() {
return name ;
}
}
使用collection集合
collection集合常用方法
注意:因为Collection是接口,无法直接创建对象,所以演示的代码先使用的是Collection的子类对象ArrayList.
package MONA.demo02_collection;
import java.util.ArrayList;
import java.util.Collection;
/**
* Collection
*/
public class Demo {
public static void main(String[] args) {
//接口多态
Collection list = new ArrayList();
//boolean add(E e);添加元素的方法,返回是否添加成功
System.out.println(list.add("aaa"));
System.out.println(list.add("bbb"));
//void clear() 清空集合
//list.clear();
//boolean remove(Object o) 删除指定元素,返回是否删除成功
System.out.println("删除元素:"+list.remove("aaa"));
//boolean contains(Object o) 判断是否包含指定元素
System.out.println("是否包含bbb:"+list.contains("bbb"));
//集合是空的,但是不是null
//boolean isEmpty() 判断集合是否为空
System.out.println("集合是否为空:"+ list.isEmpty());
//int size() 获取集合大小
System.out.println("获取集合大小:"+list.size());
System.out.println("打印集合"+list);
}
}
集合的批量操作方法 1
package MONA.demo02_collection;
import java.util.ArrayList;
import java.util.Collection;
/**
* 集合的批量操作方法
*/
public class Demo02 {
public static void main(String[] args) {
//ctrl +shifts+空格会直接出现ArrayList()
Collection list1 = new ArrayList();
list1.add("aaa");
list1.add("bbb");
list1.add("ccc");
Collection list2 = new ArrayList();
list2.add("111");
list2.add("222");
list2.add("333");
Collection list3 = new ArrayList();
list3.add("aaa");
//boolean addAll()
//将list2里面所有元素添加到list1里面
list1.addAll(list2);
//boolean containsAll
//list1中是否包含list3所有的元素
System.out.println("list1中是否包含list3所有的元素: "+list1.containsAll(list3));
System.out.println("list1:"+list1);
System.out.println("list2:"+list2);
System.out.println("list3:"+list3);
}
}
集合的批量操作方法 2
package MONA.demo02_collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
/**
* 集合的批量操作方法
*/
public class Demo02 {
public static void main(String[] args) {
//ctrl +shifts+空格会直接出现ArrayList()
Collection list1 = new ArrayList();
list1.add("aaa");
list1.add("bbb");
list1.add("ccc");
Collection list2 = new ArrayList();
list2.add("111");
list2.add("222");
list2.add("333");
list2.add("aaa");
Collection list3 = new ArrayList();
list3.add("aaa");
//移除交集:移除list1中包含list3中的元素
//list1.removeAll(list3);
//只留下交集:留下list1与list2都有的元素
//list1.retainAll(list2);
//将集合转成数组
Object[] os = list1.toArray();
System.out.println(Arrays.toString(os));
System.out.println("list1:"+list1);
System.out.println("list2:"+list2);
System.out.println("list3:"+list3);
}
}
Collection添加自定义对象
package MONA.demo02_collection;
import java.util.ArrayList;
import java.util.Collection;
/**
* 集合添加自定义的对象
*/
public class Demo03 {
public static void main(String[] args) {
Student s1 = new Student("李四");
Student s2 = new Student("王五");
Student s3 = new Student("赵六");
Collection list = new ArrayList();
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println(list);
//集合添加Int类型?
Collection list1 = new ArrayList();
list1.add(1);
list1.add(2);
System.out.println(list1);
}
}
class Student{
String name;
public Student(String name) { this.name = name; }
@Override
public String toString() { return name ; }
}