1、Collection接口实现类的特点
(1)collection实现子类可以放多个元素
(2)有些Collection实现类可以存在重复的元素,有些不可以
(3)List接口存储一组不唯一,有序(插入顺序)的对象。
(4)Set接口存储一组唯一,无序。
(5)Collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的。
2.实现子类Array子类
第一步先创建一个类,放三个属性值。
这三个属性值要添加有参构造和无参构造,get.set方法和toString
private int id;//编号
private String name;//名称
private String author;//创建者
第二创建一个实现类,先创建四个对象
NewsTitle nt1 = new NewsTitle(1001,"合肥长丰疫情形势严峻", "合肥908传媒");
NewsTitle nt2 = new NewsTitle(1002,"官方发布:2023年度国考笔试延期举行,具体时间另行通知", "北京青年报记者");
NewsTitle nt3 = new NewsTitle(1003,"受疫情影响1400名学生御寒衣物告急 湖南两高校为学生募捐冬装", "奔流新闻记者 ");
NewsTitle nt4 = new NewsTitle(1004,"北京本轮疫情毒株有多强?感染者居家隔离可行吗?病例数为何持续增加?专家详解", "北京日报");
将对象存储到一个集合,需要准备集合容器
ArrayList al = new ArrayList();
集合是通过集合对象调用方法
添加元素add(对象名),存储到集合中
ArrayList al = new ArrayList();
al.add(nt1);
al.add(nt3);
al.add(nt3);
al.add(nt4);
int size() //获取集合中的元素,返回一个int类型
int num =al.size();
System.out.println("集合中的个数"+num);
Object get(int index)方法
Object obj1=al.get(0);
NewsTitle ntw1=(NewsTitle)obj1;
//返回的是Object类型,实际上集合的是NewsTitle类型,所以进行强制转换
System.out.println(ntw1.toString());
通过get方法,可以看出:ArrayList集合中的元素是有序的,可重复(不唯一)
Object obj1=al.get(0);
NewsTitle ntw1=(NewsTitle)obj1;
//返回的是Object类型,实际上集合的是NewsTitle类型,所以进行强制转换
System.out.println(ntw1.toString());
Object obj2 =al.get(1);
NewsTitle ntw2 = (NewsTitle)obj2;
System.out.println(ntw2.toString());
Object obj3 =al.get(2);
NewsTitle ntw3 = (NewsTitle)obj3;
System.out.println(ntw3.toString());
Object obj4 =al.get(3);
NewsTitle ntw4 = (NewsTitle)obj4;
System.out.println(ntw4.toString());
运行结果
这太麻烦可以使用for循环,增强for循环和迭代
for循环遍历
for(int i =0;i<al.size();i++){
//使用get()方法获取元素
Object obj = al.get(i);
//将obj转换为NewTitle类型
NewsTitle ntwsTitle = (NewsTitle)obj;
System.out.println(ntwsTitle);
}
//曾强for循环
for(Object obj :al){
//将obj转换为NewTitle类型
NewsTitle ntwsTitle = (NewsTitle)obj;
System.out.println(ntwsTitle);
}
System.out.println("使用迭代器遍历集合:");
Iterator it =al.iterator();
while(it.hasNext()){
Object obj =it.next();
//将obj转换为NewTitle类型
NewsTitle ntwsTitle = (NewsTitle)obj;
System.out.println(ntwsTitle);
}
运行结果跟for循环结果一样
void add(int index,Object o):将元素插入到集合中指定位置
将nt2放到下标为3的位置
al.add(3, nt2);
for(Object obj :al){
//将obj转换为NewTitle类型
NewsTitle ntwsTitle = (NewsTitle)obj;
System.out.println(ntwsTitle);
}
运行结果
contains(Object o) 如果此列表中包含指定的元素,则返回 true |
boolean result=al.contains(nt2);
System.out.println(result);
运行结果
boolean | remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。 |
boolean result2=al.remove(nt1);
System.out.println(result2);
for(Object obj :al){
//将obj转换为NewTitle类型
NewsTitle ntwsTitle = (NewsTitle)obj;
System.out.println(ntwsTitle);
}
运行结果
1001被删除了
Object[] | toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。 |
Object result3 = al.toArray();
for(Object obj :al){
//将obj转换为NewTitle类型
NewsTitle ntwsTitle = (NewsTitle)obj;
System.out.println(ntwsTitle);
}
运行结果
//清零
al.clear();
System.out.println("集合为空"+al.isEmpty());
System.out.println("结合中的个数"+al.size());
运行结果