接口:Collection:是List、Set的父接口,存储一组不唯一,无序的对象;
List接口存储一组不唯一,有序(插入顺序)的对象;
Set接口存储一组唯一,无序的对象。
Map:接口存储一组键值对象,提供key到value的映射(key无序且唯一,value可重复)
Iterator:
具体类:ArrayList:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
LinkedList:采用链表式存储方式,插入、删除元素时的效率比较高
HashSet
TreeSet
HashMap
TreeMap
算法类:Collections、Arrays
ArrayList的例题
新闻管理系统,需求如下:
(1)可以存储各类新闻标题(包含ID、名称、创建者)
(2)可以获取新闻标题的总数
(3)可以逐条打印每条新闻标题的名称
分析:存储方式的选择:元素个数不确定、需要遍历元素
存储对象的确定:类型(新闻标题)、属性(ID、名称、创建者)
package dn; import java.util.ArrayList; /** * @GEJIAWEI * @DATE * @Description */ //对新闻标题的存储及操作(ArrayList) public class NewsMgr { 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.add(title1);//等同于数组中的list[0]=title1; list.add(title2); list.add(title3); list.add(title4); list.add(title5); //获取新闻标题的总数 //ArrayList的size()等同于数组的length属性的作用 System.out.println("新闻标题一共有"+list.size()+"条"); //逐条打印新闻标题的名称 System.out.println("****************************"); //方法一:逐条遍历ArrayList元素的位置(下标) for (int i = 0; i < list.size(); i++) { NewsTitle title=(NewsTitle)list.get(i);//等同于list[i],请注意,返回值为Object System.out.println(title.getTitle()+title.getAuthor()); } //方法二:增强型for System.out.println("****************************"); for (Object obj:list){ NewsTitle title=(NewsTitle)obj; System.out.println(title.getTitle()+"-"+title.getAuthor()); } } }
总结:
ArrayList:是List接口的一个具体实现类
实现了可变大小的数组
随机访问和遍历元素时,它提供更好的性能
用到的方法:add()、size()、get()