专业网站开发培训,余姚生活网,百度企业查公司名录,上海网站建设上海员君学习过了ArrayList#xff0c;知道集合是一种容器#xff0c;用来装数据的#xff0c;类似于数组#xff0c;但集合的大小可变#xff0c;开发中也非常常用。 为了满足不同的业务场景需求Java还提供了很多不同特点的集合给我们选择。 集合体系结构 Collection是一个接口知道集合是一种容器用来装数据的类似于数组但集合的大小可变开发中也非常常用。 为了满足不同的业务场景需求Java还提供了很多不同特点的集合给我们选择。 集合体系结构 Collection是一个接口并且是支持泛型的接口这个接口只规定了单列集合的特点比如基本的增删改查同时CollectionE下面又有很多子接口ListE接口和SetE接口 Collection的常用方法 collection提供的所有的常见方法是所有单列集合都可以直接去使用的。 import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;public class CollectionTest2API {public static void main(String[] args) {/*首先肯定要用collection定义一个集合集合类型是String类型的数据collection是接口不能之间new对象那就挑一个他的实现类ArrayList的集合对象给到Collection集合的变量c来记住*/CollectionString c new ArrayList();//多态写法//1.public boolean add(E,e)添加元素添加成功返回truec.add(java1);c.add(java1);c.add(java2);c.add(java2);c.add(java3);System.out.println(c);//2.public void clear(E e):清空集台中所有的元素。//c.clear();//System.out.println(c);//3.public boolean isEmpty():判断当前集合是否为空。System.out.println(c.isEmpty());//4.public int size():返回集合中元素的个数。获取集合的大小System.out.println(c.size());//5.public boolean contains(0bject obj): 判断当前集合中是否包含给定的对象System.out.println(c.contains(java1));System.out.println(c.contains(Java1));//6.public boolean remove(E e):把给定的对象在当前集合中删除:如果有相同的元素他会删除前面一个元素System.out.println(c.remove(java1));System.out.println(c);//7.public object[] toArray():把集合中的元素存储到数组中。Object[] arr c.toArray();System.out.println(Arrays.toString(arr));//可以用Arrays调用toString方法把数组打印出来//非要把集合转为字符串数组怎么办/***用c调用toArray方法在括号里面new一个String类型的数组* 在中括号里面可以填上元素的大小* 这样就相当于指定了一个String类型的数组也就是一个容器给到底层* 底层就会把集合中的元素遍历出来给到数组* 再去接她返回的结果就是一个String类型的数组返回给我们* 这样就会得到指定类型的数组*/String[] arr2 c.toArray(new String [c.size()]);System.out.println(Arrays.toString(arr2));System.out.println(--------------------------------------------------------);//把一个集合的全部数据倒入到另一个集合中去CollectionString c1 new ArrayList();c1.add(java1);c1.add(java2);CollectionString c2 new ArrayList();c2.add(java3);c2.add(java4);c1.addAll(c2);//就是把c2集合中的全部数据拷贝了一份倒进去倒入到c1中去相当于批量添加数据了注意数据类型要相适应System.out.println(c1);System.out.println(c2);//c2的数据还是有的}
}collection的遍历方式
1.迭代器Iterator 首先一定要通过集合对象调用Iterator()方法就会得到一个集合的迭代器对象迭代器对象默认指向当前集合的第一个元素的接着就可以用迭代器的常用方法来遍历集合。一个是hasNext()方法一个是next()。 import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class CollectionDemo1 {public static void main(String[] args) {CollectionString c new ArrayList();c.add(赵敏);c.add(小邵);c.add(速速);c.add(灭绝);System.out.println(c);//c [赵敏, 小邵, 速速, 灭绝]// it//使用迭代去遍历集合//1.从集合对象中获取迭代器对象。IteratorString 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()){//如果有数据就会返回true 进到循环里面来String ele it.next();//此时就使用next方法来取出数据取出来之后会移到下一个位置System.out.println(ele);//System.out.println(it.next());}}
}2.增强for 如果使用for循环那么这个集合就必须要支持索引的但collection并没有规定结合的索引问题只有List集合才支持索引。所以collection是不支持直接用for循环来遍历的。 import java.util.ArrayList;
import java.util.Collection;public class CollectionDemo2 {public static void main(String[] args) {CollectionString 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);}//c.for再回车/*for (String els : c) {}*/String[] names {的卡拉, 大法师, 北京人, 咖啡馆};for (String name : names){System.out.println(name);}}}3.Lambda表达式 import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;public class CollectionDemo3 {public static void main(String[] args) {CollectionString c new ArrayList();c.add(赵敏);c.add(小邵);c.add(殷速速);c.add(周芷若);System.out.println(c);//c [赵敏, 小邵, 殷速速, 周芷若]// s//default void forEach(Consumer? super T action): 结合Lambda表达式遍历集合://Consumer是一个接口不能直接创建对象 所以可以直接new一个匿名内部类对象出来c.forEach(new ConsumerString() {Overridepublic void accept(String s) {System.out.println(s);}});System.out.println(--------------------------);c.forEach((String s) - {System.out.println(s);});System.out.println(--------------------------);c.forEach(s - System.out.println(s));System.out.println(--------------------------);c.forEach(System.out::println);}
}案例遍历集合中的自定义对象。 import java.util.ArrayList;
import java.util.Collection;/***目标:完成电影信息的展示* new Movie(《肖生克的救赎》,9.7,罗宾斯)* new Movie(《霸王别姬》,9.6,张国荣、张丰毅)* new Movie(《阿甘正传》,9.5,汤姆.汉克斯)*/public class CollectionTest04 {public static void main(String[] args) {//1.创建一个集合容器负责存储多部电影对象CollectionMovie movies new ArrayList();//多态的方法定义一个collection类型的对象出来指向右边的集合容器对象//用这个集合容器负责存储多部电影对象用movies调add方法添加电影对象movies.add(new Movie(《肖生克的救赎》,9.7,罗宾斯));movies.add(new Movie(《霸王别姬》,9.6,张国荣、张丰毅));movies.add(new Movie(《阿甘正传》,9.5,汤姆.汉克斯));System.out.println(movies);//使用增强for循环遍历for (Movie movie : movies) {System.out.println(电影名movie.getName());System.out.println(评分movie.getScore());System.out.println(主演movie.getActor());System.out.println(------------------------------------------------);}}
}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;}Overridepublic String toString() {return Movie{ name name \ , score score , actor actor \ };}
}集合中存储的是元素对象的地址