一、常用API(共七种)
1、添加元素,添加成功,则返回true
2.清空集合中的元素//慎用
3.判断集合是否为空,是空就返回true,反之返回false
4.获取集合的大小
5.判断集合中是否包含某个元素
6.删除某个元素:如果有多个重复元素默认删除前面的第一个
7.把集合转换成数组 //[Mybatis, HTML, 神, wu]
package CollectionDeno;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class API {
public static void main(String[] args) {
//HashSet:添加的元素是无序的,不重复,无索引
Collection<String> c = new ArrayList<>();
//1.添加元素,添加成功,则返回true
c.add("Java");
c.add("HTML");
c.add("Mybatis");
c.add("HTML");
System.out.println(c.add("神"));//true
c.add("wu");
System.out.println(c);//[Java, HTML, Mybatis, HTML, 神, wu]
//2.清空集合中的元素
//c.clear();//慎用
//System.out.println(c);
//3.判断集合是否为空,是空就返回true,反之返回false
System.out.println(c.isEmpty());//false
//4.获取集合的大小
System.out.println(c.size());//6
//5.判断集合中是否包含某个元素
System.out.println(c.contains("Java"));//true
System.out.println(c.contains("java"));//false
//6.删除某个元素:如果有多个重复元素默认删除前面的第一个
System.out.println(c.remove("java"));//false
System.out.println(c);//[Java, HTML, Mybatis, HTML, 神, wu]
System.out.println(c.remove("Java"));//true
System.out.println(c);//[HTML, Mybatis, HTML, 神, wu]
System.out.println(c.remove("HTML"));//true
System.out.println(c);//[Mybatis, HTML, 神, wu]
//7.把集合转换成数组,[Mybatis, HTML, 神, wu]
Object[] arrs = c.toArray();
System.out.println("数组" + Arrays.toString(arrs));
System.out.println("---------------拓展---------------");
Collection<String> c1 = new ArrayList<>();
c1.add("java1");
c1.add("java2");
Collection<String> c2 = new ArrayList<>();
c2.add("wu");
c2.add("shen");
//addAll 把c2集合的全部元素倒入到c1中,但c2中元素依旧存在
c1.addAll(c2);
System.out.println(c1);//[java1, java2, wu, shen]
System.out.println(c2);//[wu, shen]
}
}
二、遍历方式
(1)利用迭代器
package CollectionDeno.traverse;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class IteratorDemo {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("名");
lists.add("之");
lists.add("以");
lists.add("父");
System.out.println(lists);
//1.得到当前集合的迭代器对象
Iterator<String> it = lists.iterator();
String e = it.next();
System.out.println(e);
System.out.println(it.next());
System.out.println(it.next());
System.out.println(it.next());
//System.out.println(it.next());//NoSuchElementException 出现无此元素异常的情况
//定义一个while循环(两种表达方式)
while(it.hasNext()){
String e1 = it.next();
System.out.println(e1);
}
System.out.println("----------------------------");
}
}
(2)使用增强for(foreach)的形式遍历输出
package CollectionDeno.traverse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class ForeachDemo {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("名");
lists.add("之");
lists.add("以");
lists.add("父");
System.out.println(lists);
/**
* 以增强for的形式遍历输出
*/
for (String s : lists) {
System.out.println(s);
}
System.out.println("---------------------------");
double[] scores = {100,996.5,59.5};
for (double score : scores) {
System.out.println(score);
//if(score == 59.5){
//score =66;//修改无意义,不会影响数组的元素值
//}
}
System.out.println(Arrays.toString(scores));//[100.0, 996.5, 59.5]
}
}
(3)以 Lambda 的形式输出(须记住)
package CollectionDeno.traverse;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
public class LambdaDemo {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("名");
lists.add("之");
lists.add("以");
lists.add("父");
System.out.println(lists);
/**
*以 Lambda 的形式输出
*/
//第一种表达方式
lists.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
//第二种表达方式,再度简化
lists.forEach( s-> { System.out.println(s); });
//第三种表达方式,更进一步
lists.forEach(System.out::println);
}
}
总结:
迭代器适用于少数元素个数的,因为它是一个一个的手写的
增强for(foreach)采用遍历的形式,适用于多数元素
Lambda表达式 实际上还是采取了增强for 只是进行了简化,利用Lambda的特性,让代码 更简洁,更优雅
三、存储自定义类型的数据
自定义一个对象进行信息存储
package CollectionDeno;
import java.util.ArrayList;
import java.util.Collection;
public class StorageSelfObject {
public static void main(String[] args) {
//1.定义一个电影类
//2.定义一个集合对象存储3部电影对象
Collection<Movie> movies = new ArrayList<>();
movies.add(new Movie("《你好,李焕英》",9.5,"张小斐,贾玲,沈腾,陈赫"));
movies.add(new Movie("《唐人街探案》",8.5,"王宝强,刘昊然,美女"));
movies.add(new Movie("《刺杀小说家》",8.6,"雷佳音,杨幂"));
//3.遍历集合容器中的每个电影对象
for (Movie movie : movies) {
System.out.println("片名;" + movie.getName());
System.out.println("得分;" + movie.getScore());
System.out.println("主演;" + movie.getActor());
// System.out.println("片名;" + movie.getClass());//?为什么
}
}
}
System.out.println("---------------另一个包-------------");
package CollectionDeno;
public class Movie {
private String name;
private double score;
private String actor;
public Movie() {
}
public Movie(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
@Override
public String toString() {
return "Movie{" +
"name='" + name + '\'' +
", score=" + score +
", actor='" + actor + '\'' +
'}';
}
}