上回说到,Collection. 那现在继续:
关于 java.util.Collection 接口中的常用方法。
1.Collection中能存放什么样的元素?
在没有使用泛型之前,Collection中可以存放Object类中的所有子类型;
在使用泛型后, Collection中只能存储某个具体的类型;
集合中不能直接存放基本数据类型,也不能存放Java对象,只能存放Java对象的内存地址;
2.Collection中的常用方法:
boolean add(Object e); 向集合中添加元素
int size(); 获取集合中元素的个数,不是获取该集合的容量
void clear(); 清空集合中的元素
boolean contains(Object o); 判断某元素是否在当前集合中
boolean remove(Object o); 删除集合中的某个元素
boolean isEmpty(); 判断该集合中元素的个数是否为0
Object[] toArray(); 将集合转换为数组
public class CollectionTest01 {
public static void main(String[] args) {
//Collection c = new Collection(); 接口是抽象的,无法实例化
//多态
Collection c = new ArrayList();
//向集合中添加元素
c.add(100);//自动装箱(java5新特新)。实际上是放进去一个对象的内存地址。Integer x = new Integer(100);
c.add(3.14);//自动装箱
c.add(new Object());
c.add(new Student());
c.add(true);//自动装箱
c.add("dasdasdasdasda");//该对象的内存地址放到了集合中
//获取集合中元素的个数
System.out.println("集合中元素的个数是:" + c.size()); //集合中元素的个数是:6
//清空集合中的元素
c.clear();
System.out.println("集合中元素的个数是:" + c.size()); //集合中元素的个数是:0
//再向集合中添加元素
c.add("hello");//"hello"对象的内存地址添加进集合中
c.add("world");
c.add("dzhcool");
//判断某元素是否在集合中
boolean flag = c.contains("1111111");
System.out.println(flag);//false
System.out.println(c.contains("dzhcool"));//true
int a = c.size();
System.out.println("集合中元素的个数是:" + a);//集合中元素的个数是:3
//删除集合中的某个元素
c.remove("hello");
System.out.println("集合中元素的个数是:" + c.size());//集合中元素的个数是:2
//判断该集合中元素的个数是否为0
System.out.println(c.isEmpty());//false
c.clear();
System.out.println(c.isEmpty());//true
c.add(123);
c.add(123);
c.add(123);
c.add(123);
System.out.println("集合中元素的个数是:" + c.size());
//将集合转换为数组
Object[] d = c.toArray();
for (int i = 0; i < d.length; i++) {
System.out.print(d[i] + " ");
}
System.out.println();
}
}
class Student{
}
代码执行结果:
"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:F:\IntelliJ IDEA 2020.1.1\lib\idea_rt.jar=50284:F:\IntelliJ IDEA 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\javase\out\production\collection com.dzhcool.javase.day01.CollectionTest01
集合中元素的个数是:6
集合中元素的个数是:0
false
true
集合中元素的个数是:3
集合中元素的个数是:2
false
true
集合中元素的个数是:4
123 123 123 123
Process finished with exit code 0
那么怎么遍历集合中的元素呢?
1.for循环遍历,使用下标的方式(只针对有下标的集合);
2.使用foreach;
3.使用迭代器的方式;
迭代器的执行原理:
package com.dzhcool.javase.day01;
import java.util.*;
/*
集合使用foreach
*/
public class ForEachTest02 {
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
stringList.add("123");
stringList.add("dzhcool");
stringList.add("http://www.baidu.com");
//遍历,使用迭代器的方式
Iterator<String> it = stringList.iterator();
while (it.hasNext()){
String str = it.next();
System.out.println(str);
}
System.out.println("****************************************");
//遍历,使用下标方式(只针对有下标的集合)
for (int i = 0; i < stringList.size(); i++) {
System.out.println(stringList.get(i));
}
System.out.println("****************************************");
//遍历,使用foreach方式
for (String data:stringList) {
System.out.println(data);
}
}
}
迭代器,可能现在看不懂,别着急这不就来了嘛👇
package com.dzhcool.javase.day01;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
/*
关于集合遍历/迭代
迭代器是一个对象
*/
public class CollectionTest02 {
public static void main(String[] args) {
//注意:以下讲解的遍历方式/迭代方式,是所有Collection通用的一种方式。
//再Map集合中不能用。在所有的Collection以及子类中使用
//创建集合对象
Collection c = new HashSet();
//添加元素
c.add("abc");
c.add("def");
c.add(100);
c.add(new Object());
//对集合Collection进行遍历/迭代
//第一步:获取集合对象的迭代器对象Iterator
Iterator it = c.iterator();
//第二步:通过以上获取迭代器对象开始迭代/遍历集合
/*
以下有两个方法是迭代器对象Iterator中的方法
boolean hasNext(); 如果仍有元素可以迭代,则返回true
Object next(); 返回迭代的下一个元素
*/
while (it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
//一直取,不判断,会出现 java.util.NoSuchElementException
/*
boolean hasNext = it.hasNext();
System.out.println(it.hasNext());
if (hasNext) {
//不管你当初存进去什么,取出来统一都是Object
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(it.hasNext());
if (hasNext) {
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(it.hasNext());
if (hasNext) {
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(it.hasNext());
if (hasNext) {
Object obj = it.next();
System.out.println(obj);
}
hasNext = it.hasNext();
System.out.println(it.hasNext());
if (hasNext) {
Object obj = it.next();
System.out.println(obj);
}
*/
}
}