Collection接口:无序,可重复
List接口:
有序,可重复
Arraylist实现类:
底层用可变数组存储(数组扩容),如果超出阈值,则新建一个数组替代原来的,如果在Arraylist集合中
具体方法代码:
import java.util.ArrayList;
//对新闻标题进行存储和操作(ArrayList)
public class NewMgr {
public static void main(String[] args) {
//创建新闻标题对象
NewsTitle title1=new NewsTitle(1,"北京热门景点故宫","author"){};
NewsTitle title2=new NewsTitle(2,"北京热门景点长城","author"){};
NewsTitle title3=new NewsTitle(3,"北京热门景点北海","author"){};
NewsTitle title4=new NewsTitle(4,"北京热门景点颐和园","author"){};
NewsTitle title5=new NewsTitle(5,"北京热门景点天安门","author"){};
//创建集合对象,并将新闻标题加入到集合中
ArrayList list =new ArrayList();//等同于数组中的list[0]=title1;
list.add(title1);
list.add(title2);
list.add(title3);
list.add(title4);
list.add(title5);
list.add(1,title5);
//获取新闻标题的总数
System.out.println("新闻标题一共有"+list.size()+"条");
System.out.println("*************");
//逐条打印新闻标题名称
//方法一:遍历ArrayList元素的位置(下标)
for (int i = 0; i < list.size(); i++) {
list.get(i);//等同于list[i],请注意,返回值为Obiect
NewsTitle title=(NewsTitle)list.get(i);
System.out.println(title.getTitle()+",作者"+title.getAuthor());//这句很关键
}
//方法二:增强型for,遍历输出对应下标元素
System.out.println("*********");
for (Object o : list) {
NewsTitle title=(NewsTitle)o;
System.out.println(title.getTitle());
}
System.out.println("**********");
System.out.println(list.contains(title5));
System.out.println("*************");
System.out.println(list.size());
//删除列表中是否包含某个元素
list.remove(title1);
System.out.println(list.contains(title1));
System.out.println("**********");
//获得列表元素个数
System.out.println(list.size());
//清空集合
list.clear();
System.out.println(list.size());
}
}
LinkedList实现类:
底层使用链表存储,
具体方法代码:
import java.util.LinkedList;
//对新闻标题进行存储和操作(LinkedList)
public class NewMgr2 {
public static void main(String[] args) {
//创建新闻标题对象
NewsTitle title1=new NewsTitle(1,"北京热门景点故宫","author"){};
NewsTitle title2=new NewsTitle(2,"北京热门景点长城","author"){};
NewsTitle title3=new NewsTitle(3,"北京热门景点北海","author"){};
NewsTitle title4=new NewsTitle(4,"北京热门景点颐和园","author"){};
NewsTitle title5=new NewsTitle(5,"北京热门景点天安门","author"){};
//创建集合对象,并将新闻标题加入到集合中
LinkedList list =new LinkedList();//等同于数组中的list[0]=title1;
//一次在末尾添加元素
list.add(title1);
list.add(title2);
list.add(title3);
list.add(title4);
list.add(title5);
//在指定位置加入某个元素
list.add(1,title5);
//插入头条新闻标题
NewsTitle title6=new NewsTitle(6,"北京热门景点","author6");
//在列表首部添加元素title6
list.addFirst(title6);
System.out.println("*************");
//逐条打印新闻标题名称
//方法一:遍历ArrayList元素的位置(下标)
for (int i = 0; i < list.size(); i++) {
list.get(i);//等同于list[i],请注意,返回值为Obiect
NewsTitle title=(NewsTitle)list.get(i);
System.out.println(title.getTitle()+",作者"+title.getAuthor());//这句很关键
}
//方法二:增强型for,遍历输出对应下标元素
System.out.println("*********");
for (Object o : list) {//等于for(int i=0;i<list.size();i++),因为在ArrayList或者LinkedList或者HashSet集合中,
// 构造集合的时候并没有规定类型,所以在给集合用add方法加对象的时候进去的不知道是啥类型,
//所以用增强for用的是Object类型
NewsTitle title=(NewsTitle)o;//增强for遍历后的对象o还要强转成对应的类
System.out.println(title.getTitle());
}
System.out.println("**********");
//获取头条和最末条新闻标题
System.out.println("**********");
list.getFirst();
NewsTitle titleFir=(NewsTitle)list.getFirst();
list.getLast();
NewsTitle titleLas=(NewsTitle)list.getLast();
System.out.println("头条新闻标题为:"+titleFir.getTitle()+"末条新闻标题为:"+titleLas.getTitle());//这个地方转换很关键,一定要多看几遍*************
System.out.println(list.contains(title5));
System.out.println("*************");
//删除列表中是否包含某个元素
list.remove(title1);
System.out.println(list.contains(title1));
System.out.println("**********");
//获得列表元素个数
System.out.println(list.size());
//清空集合
list.clear();
System.out.println(list.size());
}
}
Set接口:
无序,不可重复
HashSet实现类:底层存储是用HashMap的key来进行存储
Map接口:
HashMap实现类:底层是用一个Entry<K,V>(映射关系)来存储的