子接口
List:有序的、可以重复的数据(相当于“动态”数组)
具体实现类: ArrayList(主要实现类,底层还是数组)、LinkedList、Vector
Set:存储无序的、不可重复的数据(不可重复)
具体实现类:HashSet(主要实现类)、LinkedHashSet、TreeSet
Set底层就是Map,所以名字都一样
方法 | 作用 |
---|---|
add(E obj) | 添加元素对象到当前集合中 |
addAll(Collection other) | 添加other集合中的所有元素对象到当前集合中,注意:add和addAll的区别 |
public class CollectionTest {
public static void main(String[] args) {
Collection coll=new ArrayList();
//add方法
coll.add("AA");
coll.add(123); //不能存基本数据类型,123被自动装箱为Integer了
coll.add(new Product("手机",1299));
System.out.println(coll);
//addAll方法,添加入一个Collection集合
Collection coll2=new ArrayList();
coll.add("BB");
coll.add(456); //不能存基本数据类型,123被自动装箱为Integer了
coll.add(new Product("电脑",4999));
//使用addAll是将集合的元素分别加入,add是将集合看作一个元素加入
coll.add(coll2);
coll.addAll(coll2);
System.out.println(coll);
//size方法 ,打印出来元素个数
System.out.println(coll.size());
}
}
方法 | 作用 |
---|---|
(3)int size() | 获取当前集合中实际存储的元素个数 |
(4)boolean isEmpty() | 判断当前集合是否为空集合 |
(5)boolean contains(Object obj) | 判断当前集合中是否存在一个与obj对象equals返回true的元素 |
(6)boolean containsAll(Collection coll) | 判断coll集合中的元素是否在当前集合中都存在。即coll集合是否是当前集合的“子集” |
(7)boolean equals(Object obj) | 判断当前集合与obj是否相等 |
public class CollectionTest {
public static void main(String[] args) {
Collection coll=new ArrayList();
//contains方法
coll.add("AA");
coll.add(123);
coll.add(new Product("手机",1499));
System.out.println(coll.contains(123));//true 因为比较的不是对象地址,是比较的内容equals
System.out.println(coll.contains(new Product("手机",1499)));//false 对象比较的是地址,需要重写equals比较内容
}
}
方法 | 作用 |
---|---|
(8)void clear() | :清空集合元素 |
(9) boolean remove(Object obj) | 从当前集合中删除第一个找到的与obj对象equals返回true的元素。 |
(10)boolean removeAll(Collection coll) | 从当前集合中删除所有与coll集合中相同的元素。即this = this - this ∩ coll |
(11)boolean retainAll(Collection coll) | 从当前集合中删除两个集合中不同的元素,使得当前集合仅保留与coll集合中的元素相同的元素,即当前集合中仅保留两个集合的交集,即this = this ∩ coll; |
public class CollectionTest {
public static void main(String[] args) {
Collection coll=new ArrayList();
//clear方法
coll.add("AA");
coll.add("AA");
coll.add(123);
coll.add(new Product("手机",1499));
//coll.clear();
//remove删除第一个遇到相符合的对象
coll.remove(new Product("手机",1499));
//removeAll 从当前集合中删除一个集合
Collection coll2=new ArrayList();
coll2.add("AA");
coll2.add("AA");
coll.removeAll(coll2);
System.out.println(coll);
}
}
方法 | 作用 |
---|---|
(12)Object[] toArray() | 返回包含当前集合中所有元素的数组 |
(13)hashCode() | 获取集合对象的哈希值 |
(14)iterator() | 返回迭代器对象,用于集合遍历 |
public class CollectionTest {
public static void main(String[] args) {
Collection coll=new ArrayList();
//toArray 由集合转换为数组
coll.add("AA");
coll.add("AA");
coll.add(123);
coll.add(new Product("手机",1499));
Object[] array = coll.toArray();
System.out.println(Arrays.toString(array));
}
}
Collection有14个常用方法
相互转换:
集合----》数组 toArray()
数组----》集合 Arrays的静态方法asList()
向Collection添加元素的要求:
一定要重写equals()方法
迭代器的作用?
用来遍历集合元素的
如何获取Iterator对象?
//获取迭代器对象
Iterator iterator = coll.iterator();
public class IteratorTest {
public static void main(String[] args) {
Collection coll=new ArrayList();
coll.add("AA");
coll.add("AA");
coll.add(123);
coll.add(new Product("手机",1499));
//遍历方式一:
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next());
// System.out.println(iterator.next()); //如果超出元素个数会报错
//遍历方式二
// for (int i = 0; i <coll.size() ; i++) {
// System.out.println(iterator.next()); //指针下移 然后 返回对象
// }
//遍历方式三
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
用来遍历数组、集合
for(元素的数据类型 局部变量 : Collection集合或数组){
//操作局部变量的输出操作
}
//这里局部变量就是一个临时变量,自己命名就可以
针对集合来讲,底层使用的还是迭代器
增强for循环是将集合、数组中的元素赋值给临时变量,循环体中对临时变量的修改,可能不会修改原有的元素
推荐阅读: