集合框架

概述——集合框架
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强转成子类Theme
			Theme 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());
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值