- 集合的概念
对象的容器,定义了对多个对象进行操作的常用方法,类似于数组的功能。 - 与数组的区别
1.数组的长度固定,集合长度不固定。
2.数组可存储基本类型和引用类型,集合只可以存储引用类型。 - 泛型
格式:<E>
,E表示Element(元素)
概念: JDK1.5 的一个新特性,通常用来和集合对象一起使用,是程序的增强器,它是目前主流的开发方式
主要目的: 检查约束集合中元素的类型
好处:可以把报错的时期提前,在编译期就报错,而不是运行后才抛出异常,在集合中添加元素时,会检查元素的数据类型,如果不是要求的数据类型就会报错
注意: 尖括号中的值必须是引用类型,不能使用基本类型,后面的尖括号内容可以不写,但是前面的泛型必须写
泛型方法:
public static void main(String[] args) {
Integer[] a = {1,2,3,4,5,6,7,8,9,10};
print(a);
String[] b = {"4AM","是","PGC","世界","冠军"};
print(b);
Double[] c = {0.6,0.66,0.666,0.6666};
print(c);
}
//如果在方法上使用泛型,必须两处同时出现,一个是方法传入参数的类型是泛型,一个是返回值前加泛型<E>
private static <E> void print(E[] c) {
for (E d:c){
System.out.println(d);
}
}
泛型的好处1:
public static void main(String[] args) {
List list = new ArrayList();
list.add("BerylM");
list.add(762);
System.out.println(list);
List<String> list2 = new ArrayList();
list2.add("雷神");
//list2.add(111); 会报错
}
泛型的好处2:
public static void main(String[] args) {
Integer[] a = {1,2,3,4,5,6,7,8,9,10};
print(a);
String[] b = {"4AM","是","PGC","世界","冠军"};
print(b);
Double[] c = {0.6,0.66,0.666,0.6666};
print(c);
}
private static void print(Integer[] a) {
//增强for
/**
* 格式for(2 3:1){}
* 1是要遍历的数据
* 2是每轮遍历到的数据类型
* 3是变量名
* 好处:比普通for写法简单,效率还更高
* 坏处:不能通过下标操作值,只能从头到尾依次遍历
*/
for(Integer i :a){
System.out.println(i);
}
}
- Collection体系
List接口(有序,有下标,元素可重复):下分ArrayList(数组集合)、LinkedList(链表)、vector(老式集合)。
Set接口(无序,无下标、元素不可重复):下分HashSet(哈希表)、SortedSet。 - Collection父接口
特点:无序、无下标、不能重复。
**集合1.retainAll(集合2):**保留当前集合与参数集合的公共元素,删掉集合1中不属于公共元素的部分,不影响集合2
Boolean add(Object obj): 添加一个对象。
Boolean addAll(Collection c): 将一个集合中的所有对象添加到此集合中,c集合本身没有改变。
void clear(): 清空此集合的所有对象。
Boolean contains(Object o): 检查此集合中是否包含o对象。
Boolean equals(Object o): 检查此集合是否与特定对象相等。
Boolean isEmpty(): 判断此集合是否为空。
Boolean remove(Object o): 删除此集合中的o对象。
Boolean removeAll(Collection c): 删除此集合中的与集合c相同的元素。
int size(): 返回此集合中的元素个数。
object[] toArray(): 将此集合转换为数组,数组类型是Object。 - Collection的使用(1)
package Javaset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class demo1 {
private static Iterator Iterator;
public static void main(String[] args) {
// 创建集合
Collection collection = new ArrayList();
// 添加元素
collection.add("Apple");
collection.add("Orange");
collection.add("Bear");
System.out.println(collection.size());
System.out.println(collection);
// 删除元素
collection.remove("Bear");
System.out.println(collection);
// 遍历元素****
// 1.增强for
for (Object object : collection)
System.out.println(object);
// 2.使用迭代器(遍历集合专用)
System.out.println("*************迭代器*************");
Iterator it = collection.iterator();
while (it.hasNext()) {
String s = (String) it.next();
//迭代器不能删除,如果要,可以用it.remove();
System.out.println(s);
}
// 判断
System.out.println(collection.contains("Apple"));
}
}
- Collection的使用(2)
package Javaset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class demo2 {
public static void main(String[] args) {
// 新建Collection对象
Collection collection = new ArrayList();
Student s1 = new Student("张三", 20);
Student s2 = new Student("李四", 19);
Student s3 = new Student("王五", 21);
// 添加数据
collection.add(s1);
collection.add(s2);
collection.add(s3);
System.out.println(collection.toString());
// 删除数据
collection.remove(s1);
System.out.println("删除之后:" + collection.size());
// 遍历
// 增强for
System.out.println("增强for");
for (Object object : collection) {
Student s4 = (Student) object;
System.out.println(s4.toString());
}
// 迭代器:hasNext() next() remove();迭代过程不能使用删除
Iterator it = collection.iterator();
while (it.hasNext()) {
Student S4 = (Student) it.next();
System.out.println(S4.toString());
}
// 4.判断
System.out.println(collection.contains(s1));
System.out.println(collection.isEmpty());
}
}