一.认识
public class Test {
public static void main(String[] args) {
// 简单确认一下Collection集合的特点。
ArrayList<String> list = new ArrayList<>(); // 有序 可重复 有索引
list.add("java1");
list.add("java2");
list.add("java1");
list.add("java2");
System.out.println(list);//[java1, java2, java1, java2]
HashSet<String> set = new HashSet<>(); // 无序,不重复,无索引
set.add("java1");
set.add("java2");
set.add("java1");
set.add("java2");
set.add("java3");
System.out.println(set);//[java3, java2, java1]
}
}
二.Collection的常用方法
public class Test3 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>(); // 多态写法
// 1.public boolean add(E e):添加元素, 添加成功返回true。
c.add("java1");
c.add("java1");
c.add("java2");
c.add("java2");
c.add("java3");
System.out.println(c);//[java1, java1, java2, java2, java3]
// 2.public void clear():清空集合的元素。
//c.clear();
//System.out.println(c);//[]
// 3.public boolean isEmpty():判断集合是否为空 是空返回true,反之。
System.out.println(c.isEmpty()); // false
// 4.public int size():获取集合的大小。
System.out.println(c.size());//5
// 5.public boolean contains(Object obj):判断集合中是否包含某个元素。
System.out.println(c.contains("java1")); // true
System.out.println(c.contains("Java1")); // false
// 6.public boolean remove(E e):删除某个元素:如果有多个重复元素默认删除前面的第一个!
System.out.println(c.remove("java1"));
System.out.println(c); //[java1, java2, java2, java3]
// 7.public Object[] toArray():把集合转换成数组
Object[] arr = c.toArray();
System.out.println(Arrays.toString(arr)); //[java1, java2, java2, java3]
String[] arr2 = c.toArray(new String[c.size()]);
System.out.println(Arrays.toString(arr2)); //[java1, java2, java2, java3]
System.out.println("--------------------------------------------");
// 把一个集合的全部数据倒入到另一个集合中去。
Collection<String> c1 = new ArrayList<>();
c1.add("java1");
c1.add("java2");
Collection<String> c2 = new ArrayList<>();
c2.add("java3");
c2.add("java4");
c1.addAll(c2); // 就是把c2集合的全部数据倒入到c1集合中去。
System.out.println(c1);//[java1, java2, java3, java4]
System.out.println(c2);//[java3, java4]
}
}
三.Collection的遍历方式
1.迭代器:是用来遍历集合的专用方式(数组没有迭代器)在Java中迭代器的代表是lterator
/**
目标:Collection集合的遍历方式一:使迭代器Iterator遍历
*/
public class Test3 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("赵敏");
c.add("小昭");
c.add("素素");
c.add("灭绝");
System.out.println(c);
// c = [赵敏, 小昭, 素素,灭绝]
// it
// 使用迭代器遍历集合
// 1、从集合对象中获取迭代器对象。
Iterator<String> it = c.iterator();
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next()); // 出现异常的
// 2、我们应该使用循环结合迭代器遍历集合。
while (it.hasNext()) {
String ele = it.next();
System.out.println(ele);
}//赵敏
} //小昭
} //素素
//灭绝
2.增强for循环
public class Test3 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("赵敏");
c.add("小昭");
c.add("素素");
c.add("灭绝");
System.out.println(c);
// c = [赵敏, 小昭, 素素, 灭绝]
// ele
// 使用增强for遍历集合或者数组。
for (String ele : c) {
System.out.println(ele);
}//赵敏
//小昭
//素素
//灭绝
String[] names = {"迪丽热巴", "古力娜扎", "稀奇哈哈"};
for (String name : names) {
System.out.println(name);
}//迪丽热巴
} //古力娜扎
} //稀奇哈哈
3.lambda表达式
/**
目标:Collection集合的遍历方式三:JDK8开始新增的Lambda表达式。
*/
public class Test3 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("赵敏");
c.add("小昭");
c.add("殷素素");
c.add("周芷若");
System.out.println(c);
// [赵敏, 小昭, 殷素素, 周芷若]
// s
// default void forEach(Consumer<? super T> action): 结合Lambda表达式遍历集合:
// c.forEach(new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// });
//
// c.forEach((String s) -> {
// System.out.println(s);
// });
//
// c.forEach(s -> {
// System.out.println(s);
// });
//
// c.forEach(s -> System.out.println(s) );
c.forEach(System.out::println );
}
}
4.遍历集合中的自定义对象
需求:展示多部电影信息
(1)每部电影都是一个对象,多部电影要使用集合装起来
(2)遍历集合中的3个电影对象,输出每部电影的详情信息
Movie.Java
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 + '\'' +
'}';
}
}
Test.Java
/**
* 目标:完成电影信息的展示。
* new Movie("《肖生克的救赎》" , 9.7 , "罗宾斯")
* new Movie("《霸王别姬》" , 9.6 , "张国荣、张丰毅")
* new Movie("《阿甘正传》" , 9.5 , "汤姆.汉克斯")
*/
public class Test3 {
public static void main(String[] args) {
// 1、创建一个集合容器负责存储多部电影对象。
Collection<Movie> movies = new ArrayList<>();
movies.add( new Movie("《肖生克的救赎》" , 9.7 , "罗宾斯"));
movies.add( new Movie("《霸王别姬》" , 9.6 , "张国荣、张丰毅"));
movies.add( new Movie("《阿甘正传》" , 9.5 , "汤姆.汉克斯"));
System.out.println(movies);
for (Movie movie : movies) {
System.out.println("电影名:" + movie.getName());
System.out.println("评分:" + movie.getScore());
System.out.println("主演:" + movie.getActor());
System.out.println("---------------------------------------------");
}
}
}
[Movie{name='《肖生克的救赎》', score=9.7, actor='罗宾斯'}, Movie{name='《霸王别姬》', score=9.6, actor='张国荣、张丰毅'}, Movie{name='《阿甘正传》', score=9.5, actor='汤姆.汉克斯'}]
电影名:《肖生克的救赎》
评分:9.7
主演:罗宾斯
---------------------------------------------
电影名:《霸王别姬》
评分:9.6
主演:张国荣、张丰毅
---------------------------------------------
电影名:《阿甘正传》
评分:9.5
主演:汤姆.汉克斯
---------------------------------------------