集合框架

来源:互联网 发布:《linux就该这么学 编辑:程序博客网 时间:2024/06/03 22:15
概述——集合框架
Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为java集合框架(Java Collection Framework)。Java程序员在具体应用时,不必考虑数据结构和算法的实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率
为什么使用集合框架

如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架

Java集合框架包含的内容

Java集合框架中四个常用表示集合的接口(Collection,List,Set,Map)

集合框架的接口
Collection接口存储一组不唯一,无序对象
List接口存储一组不唯一,有序(插入顺序)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key(键)到value(值)的映射
List接口的实现类
list(ArrayList,LinkedList)
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式。插入、删除元素是效率比较高
例题:
package com.jredu.ch10;import java.util.List;import java.util.ArrayList;public class Ch02 {public static void main(String[] args) {// TODO Auto-generated method stub//声明集合List list =new ArrayList<>();//声明要存储的数据Theme theme =new Theme(1, "主题1", "主题简介1");Theme theme2 =new Theme(2, "主题2", "主题简介2");//添加数据到集合中list.add(theme);list.add(theme2);//显示数据for(int i=0;i<list.size();i++){//父类object强转成子类ThemeTheme t=(Theme)list.get(i);//通过get方法获取对应属性的值System.out.println(t.getId()+"\t"+t.getTitle()+"\t参与调查\t调查结果");System.out.println("\t"+t.getRemark());}}}
ArrayList集合类
List 接口常用方法
方法名说明boolean add(Object o)在列表的末尾顺序添加元素,起始索引位置从0开始void add(int index,Object o)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间int size()返回列表中的元素个数Object  get(int index)返回指定索引位置处的元素,取出的元素是Object类型,使用前需要进行强制类型转换boolean contains(Object o)判断列表中是否存在指定元素boolean remove(Object o)从列表中删除元素boolean remove(int index)从列表中删除指定位置元素,起始索引位置从0开始
例题:
package com.jredu.ch10;import java.util.ArrayList;import java.util.List;/** * 集合框架位于java.util包中 集合List:ArrayList * List:有序不唯一 * @author Yoga11s * */public class Ch01 {/** * ArrayList:内部采用了可变长度的数组,分配的是连续的空间 遍历元素(从第一个到最后一个)及随机访问(随机查看某一个) *  * @param args */public static void main(String[] args) {// TODO Auto-generated method stub// 左边:接口 右边:实现类 多态List list = new ArrayList<>();// 接口定义的方法// 在List中追加一条数据list.add(1);list.add('a');list.add(true);list.add(123);//访问某个数据//System.out.println(list.get(2));//在指定下标位置插入元素list.add(1,"abc");//ArrayList中重写了toString方法,下标位置必须介于0到个数之间System.out.println(list.toString());//size方法:获取List个数System.out.println("list的元素个数是:"+list.size());//remove方法,有两个重载(int a),(Object o)//通过传入具体的元素值来删除元素,返回删除结果//list.remove("abc");//System.out.println("是否删除成功?"+list.remove((Character)'a'));System.out.println("是否删除成功?"+list.remove("abc"));//通过传入对应元素下标来删除元素,返回被删除的元素内容//下标位置范围在0到最后一个元素下标之间System.out.println("被删除的元素是"+list.remove(3));;System.out.println("list的元素个数是:"+list.size());System.out.println(list.get(2));//contains:判断是否存在某个元素值System.out.println(list.contains("abc"));}}--------------------------------------------------------------------------------
LinkedList集合类
LinkedList采用链表存储方式。插入、删除元素是效率比较高
常用方法
方法名说明void  addFirst(Object o)在列表的首部添加元素void  addLast(Object o)在列表的末尾添加元素Object  getFirst()返回列表中的第一个元素Object  getLast()返回列表中的最后一个元素Object  removeFirst()删除并返回列表中的第一个元素Object  removeLast()删除并返回列表中的最后一个元素
例题:
package com.jredu.ch10;import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Set;public class Ch03 {public static void main(String[] args) {// TODO Auto-generated method stub//addAll//向集合当中添加一个集合List list2=new ArrayList<>();Set set=new HashSet<>();set.add(8);list2.add(1);list2.add(2);list2.add(3);List list=new LinkedList<>();list.add(0);list.add(1);list.add(1);list.add(1);list.add(1);(list).addAll(list2);list.addAll(set);System.out.println(list);System.out.println(list.size());//isEmpty()判断集合是否为空,true,false//判断一个集合是否为空//if(list!=null&&!list.isEmpty()){//}//clear():清空数据,保留对象,重置list//list.clear();//list=null;System.out.println(list);System.out.println(list.size());//indexOf:返回元素第一次出现位置的下标//lastIndexOf:返回元素最后一次出现位置的下标System.out.println(list.indexOf(3));System.out.println(list.lastIndexOf(1));//removeAll从集合中删除另一个集合所包含的元素list.removeAll(list2);System.out.println(list2);System.out.println(list);//数组和List之间的相互转换//toArray可以把集合转成数组Object[] arr=list.toArray();//数组转集合List l=Arrays.asList(arr);System.out.println(l);}}
迭代器Iterator
如何遍历List集合呢?
方法1:通过for循环和get()方法配合实现遍历
方法2:通过迭代器Iterator实现遍历
所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历
Collection接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历2
boolean hasNext():判断是否存在另一个可访问的元素
Object next():返回要访问的下一个元素
terator iter=list.iterator();while(iter.hasNext()){//每次循环只调用一遍next方法//next每调用一次就获取下一条数据//获取的类型和集合中add的类型一样Dog dog=(Dog)iter.next();System.out.println(dog.getName()+"\t"+dog.getType());}



原创粉丝点击