集合框架
集合的相关概念 :集合(Collection),即容器(Container),是用来存放数据的盒子。Java中提供了很多的集合类。Java容器类的作用是用来“保存对象”,是可变长的对象数组。其可分为两种类型。(1)Collection(称为集合):一个独立元素的序列。(2)Map(称为映射表或图):一组成对的“键/值”对象。
补充:Java集合框架中常用的Collection有三种:Set(规则集)、List(线性表)和Queue(队列)。Set的实例用于存储一组不重复的元素,List的示例用于存储一个有 元素构成的有序集合,而Queue的实例用于存储使用先进先出方式处理的对象。
集合的特点 :(1)集合可以存放不同类型的变量 (2)集合类中容纳的元素都是Object类型,一旦把一个对象置入集合类中,它的类信息将丢失(3)集合类的大小可改变。
集合的一些基本操作: (声明:建议具体操作时查API后再使用)
(1)创建List集合对象 List names=new ArrayList();
(2)往集合中添加数据(使用add方法) names.add(“张三”) ;
(3)获取集合大小(使用size方法) System.out.println(“集合大小为:”+names.size());
(4)删除数据(使用remove方法) names.remove(1); //删除2条数据
(5)修改数据(使用set方法) names.set(2,”赵七”); //修改第3条数据
(6)获取数据(使用get方法) //获取第3条数据 System.out.println(“第3条数据为:”+names.get(2));
(7)遍历集合元素 通过集合获取迭代器对象: Iterator it = c.iterator(); 遍历集合: while(it.hasnext()){ String s = (String)it.next() System.out.println(s); } (这里事实上用for循环效率更高)
4 集合的一般使用步骤
A. 创建集合对象
B. 创建元素对象
C. 将元素对象存储到集合中
D. 遍历集合
a) 通过集合获取迭代器对象
b) 通过迭代器对象hasNext() 方法来判断是否还有元素
c) 通过next() 方法来获取元素,并移到下一个位置。
5. List集合的特有功能(具体使用时,先查API再使用,ArrayList)
1. 添加功能:void add(int index,object element) : 在指定位置添加元素
2. 获取功能:Object get(int index): 获取指定位置的元素
3. 列表迭代器 ListIterator listIterator():list集合特有的迭代器
4. 删除功能 Object remove(int index) : 根据索引删除元素,返回被删除的元素
5. 修改功能 Object set(int index,Objectelement):根据索引修改元素,返回被修改的元素
6 并发修改异常 :迭代器遍历元素的时候,是不能通过集合修改元素的。
解决方案一;迭代器迭代元素,迭代器修改元素
//使用迭代器遍历元素,
ListIterator list= li.listIterator();
while(list.hasNext()){
if("world".equals(list.next()))
{
list.add("javaee");
}
}
System.out.println(li);
解决方案二 : 使用集合遍历,使用集合修改
for(int i = 0;i
String s =(String)li.get(i);
if("world".equals(s)){
li.add("javaee");
}
}
System.out.println(li);
7. List三个子类的特点:
数组的特点是查询快,增删慢;链表的特点是查询慢,增删快;栈的特点是先进后出;队列的特点是先进先出。
ArrayList:底层数据结构是数组,查询快,增删慢。线程不安全,效率高。
Vector:底层数据结构是数组,查询快,增删慢。线程安全,效率低。
LinkedList :底层是链表,查询慢,增删快,线程不安全,效率高。
Map接口
Map中每项都是成对出现的,它提供了一组键值的映射。其中存储的每个对象都有一个相应的关键字(key),关键字决定了对象在Map中的存储位置。关键字应该是唯一的,每个key只能映射一个value。
用put(Objectkey,Objectvalue)方法即可将一个键与一个值对象相关联。用get(Objectkey)可得到与此key对象所对应的值对象。
Map常用操作举例:
o(1)创建Map集合对象
Map person=new HashMap();
o(2)往集合中添加/修改数据(使用put方法)
person.put(“姓名”,“张三”);
p(3)获取集合大小(使用size方法)
System.out.println(“集合大小为:”+person.size());
p(4)删除数据(使用remove方法)
person.remove(“身高”); //删除”身高”的数据
p(5)获取数据(使用get方法)
//获取“爱好”数据
System.out.println(“爱好为:”+ person.get(“爱好”));
p(6)遍历集合所有数据
遍历Map的方法大约有3种,这里采用“迭代器”方式遍历。
Iteratorit =person.entrySet().iterator();
while(it.hasNext()){
Map.Entry m=(Map.Entry)it.next();
System.out.println("键:"+ m.getKey() + ",值:"+ m.getValue());
}