【学习笔记】集合(一)
什么是集合?
-
概念:对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能
-
和数组的区别:
-
(1)数组长度固定,集合长度不固定
-
(2)数组可以存储基本类型和引用类型,集合只能存储引用类型,如果想要存储基本类型,可以采用装箱的方式
-
-
位置:java.util.*
Collection 体系集合
-
Collection 接口位于这个体系的最顶层,是所有集合的父接口,它有两个子接口List、Set
-
List 接口的特点:有序、有下标、元素可重复
-
有序是指添加的顺序和遍历的顺序是一致的
-
有下标指有角标,可以像数组一样访问
-
实现类:ArrayList, LinkedList, Vector
-
-
Set接口的特点:无序、无下标、元素不可重复
-
实现类:HsahSet,TreeSet(实现SortedSet接口)
-
-
Collection 父接口
-
特点:代表一组任意类型的对象
-
由于Collection有两个子接口,并且它们的特点相反,所以我们整体把Collection看成是无序、无下标、不能重复。
-
但在API中,对Collection 的描述是:有部分有序,有部分无序。有部分可以重复,有部分不能重复等。
Collection 中的方法
1.boolean add(Object obj) //添加一个对象
2.boolean remove(Object o) //在此集合中移除o对象
3.int size() //返回此集合中的元素个数
4.boolean isEmpty() //判断此集合是否为空
5.boolean contains(Object o) //检查此集合中是否包含o对象
下面我们在代码中体现,集合的创建、添加、删除、遍历、判断等功能
-
创建、添加、删除
package com.collection.collectionDemo;
import java.util.ArrayList;
import java.util.Collection;
public class Demo01 {
public static void main(String[] args) {
//1.集合的创建 实例化collection的实现类 ArrayList
Collection collection = new ArrayList();
//2.向集合中添加数据,用add方法
collection.add("橘子");
collection.add("西瓜");
collection.add("葡萄");
collection.add("芒果");
System.out.println(collection);
//size方法查看集合中元素的个数
System.out.println("元素个数为:"+collection.size());
//3.删除元素,用remove
collection.remove("芒果");
System.out.println(collection);
}
}
-
数组的遍历
1.forEach 循环 不能用for循环,原因是collection的这些方法中都没有下标,而for循环是有下标的)
package com.collection.collectionDemo;
import java.util.ArrayList;
import java.util.Collection;
public class Demo01 {
public static void main(String[] args) {
//1.集合的创建 实例化collection的实现类 ArrayList
Collection collection = new ArrayList();
//2.向集合中添加数据,用add方法
collection.add("橘子");
collection.add("西瓜");
collection.add("葡萄");
collection.add("芒果");
System.out.println(collection);
//size方法查看集合中元素的个数
System.out.println("元素个数为:"+collection.size());
for (Object o:
collection) {
System.out.println(o);
}
}
}
2.iterator() 迭代器
-
iterator() 的返回值 是 Iterator 对象,它是一个接口
-
Iterator 有三个方法:
-
hasNext() 如果仍有元素可以迭代,则返回true
-
next() 返回迭代的下一个元素
-
remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素
-
在迭代过程中,只能用remove删除,不能用collection删除
-
-
-
进行迭代时,先用hasNext() 方法 判断有没有元素,如果有就调用next() 将该元素取出来,然后指针后移,在用hasNext() 方法 判断,如果没有元素就返回false
package com.collection.collectionDemo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo01 {
public static void main(String[] args) {
//1.集合的创建 实例化collection的实现类 ArrayList
Collection collection = new ArrayList();
//2.向集合中添加数据,用add方法
collection.add("橘子");
collection.add("西瓜");
collection.add("葡萄");
collection.add("芒果");
System.out.println(collection);
//size方法查看集合中元素的个数
System.out.println("元素个数为:"+collection.size());
Iterator it = collection.iterator();
while (it.hasNext()){ //判断有没有元素
String s = (String)it.next(); //有就取出来,把Object强制类型转换为String
System.out.println(s);
it.remove(); //也可以删除该元素
}
System.out.println(collection.size());
}
}
注意:在迭代过程中,不可以使用collection的方法,否则会有并发修改异常
-
判断
1.contains(o) //判断集合中有没有o对象
2.isEmpty() //判断集合是否为空
package com.collection.collectionDemo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo01 {
public static void main(String[] args) {
//1.集合的创建 实例化collection的实现类 ArrayList
Collection collection = new ArrayList();
//2.向集合中添加数据,用add方法
collection.add("橘子");
collection.add("西瓜");
collection.add("葡萄");
collection.add("芒果");
System.out.println(collection);
//size方法查看集合中元素的个数
System.out.println("元素个数为:"+collection.size());
System.out.println("有没有西瓜:"+collection.contains("西瓜"));
System.out.println("集合是否为空:" + collection.isEmpty());
}
}
-
使用Collection保存学生信息
package com.collection.collectionDemo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo02 {
public static void main(String[] args) {
//1创建集合和学生信息
Collection collection = new ArrayList();
Student s1 = new Student("张三",20);
Student s2 = new Student("李四",18);
Student s3 = new Student("王五",19);
//2将学生信息添加到集合中
collection.add(s1);
collection.add(s2);
collection.add(s3);
System.out.println(collection.toString());
//删除学生信息
System.out.println("--------删除之后学生信息--------");
collection.remove(s1);
System.out.println(collection.toString());
//遍历
System.out.println("--------forEach遍历--------");
for (Object o: collection) {
Student s = (Student) o;
System.out.println(s.toString());
}
System.out.println("--------Iterator遍历--------");
Iterator it = collection.iterator();
while(it.hasNext()){
Student s = (Student) it.next();
System.out.println(s);
}
//判断
System.out.println("集合中是否包含s1:" + collection.contains(s1));
System.out.println("集合是否为空:" + collection.isEmpty());
}
}
-
除了上面提到的方法,还有一下方法:
-
boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中
-
package com.collection.collectionDemo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01 { public static void main(String[] args) { //1.集合的创建 实例化collection的实现类 ArrayList Collection collection = new ArrayList(); //2.向集合中添加数据,用add方法 collection.add("橘子"); collection.add("西瓜"); collection.add("葡萄"); collection.add("芒果"); //创建一个新的集合 Collection collection1 = new ArrayList(); System.out.println("collection1集合元素个数为:"+collection1.size()); //把collection 中的元素添加到collection1 collection1.addAll(collection); System.out.println("collection1集合元素为:"+collection1); } }
-
-
boolean equals(Object o) //比较此集合是否与指定对象相等,比较两个集合是否相等
-
package com.collection.collectionDemo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01 { public static void main(String[] args) { //1.集合的创建 实例化collection的实现类 ArrayList Collection collection = new ArrayList(); //2.向集合中添加数据,用add方法 collection.add("橘子"); collection.add("西瓜"); collection.add("葡萄"); collection.add("芒果"); //创建一个新的集合 Collection collection1 = new ArrayList(); System.out.println("collection1集合元素个数为:"+collection1.size()); //把collection 中的元素添加到collection1 collection1.addAll(collection); collection1.add("香蕉"); System.out.println("collection1集合元素为:"+collection1); System.out.println("两个集合是否相等:"+collection.equals(collection1)); } }
-
clear() //清空此集合中所有对象
package com.collection.collectionDemo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01 { public static void main(String[] args) { //1.集合的创建 实例化collection的实现类 ArrayList Collection collection = new ArrayList(); //2.向集合中添加数据,用add方法 collection.add("橘子"); collection.add("西瓜"); collection.add("葡萄"); collection.add("芒果"); //创建一个新的集合 Collection collection1 = new ArrayList(); System.out.println("collection1集合元素个数为:"+collection1.size()); //把collection 中的元素添加到collection1 collection1.addAll(collection); collection1.clear(); collection1.add("香蕉"); System.out.println("collection1集合元素为:"+collection1); } }
-
Object[] toArray() //将此集合转换成数组
package com.collection.collectionDemo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo01 { public static void main(String[] args) { //1.集合的创建 实例化collection的实现类 ArrayList Collection collection = new ArrayList(); //2.向集合中添加数据,用add方法 collection.add("橘子"); collection.add("西瓜"); collection.add("葡萄"); collection.add("芒果"); Object[] o = collection.toArray(); for (Object str: o) { System.out.println(str); } } }
-