java集合框架为我们提供了一套性能优良、使用方便的接口和类,他们都为与java.util包中,java集合框架包含主要内容及彼此之间的关系(如下图):
集合框架是为了表示和操作集合而规定的一种统一的标准体系结构,集合框架包含三大块内容:
1.接口:表示集合的抽象数据类型,如cellection、list、Set、Map、Iterator
2.实现:集合框架中接口的具体实现,图中粗实线框表示常用的实现,ArrayList、HashSet、HashMap
3.算法:在一个实现了某个集合框架的接口的对象身上完成某种有用的计算的方法,如查找、排序等。Java提供了对集合操作的工具类Collections(注意不是Collection,类似于Arrays类),他提供了对进行集合进行排序等多种算法实现
cellection、list、Set、Map、Iterator的区别:
Collection接口存储一组不唯一(允许重复)、无序的对象
Set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象
List接口继承Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象
Map接口存储一组成对的键-值对象,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,但允许重复
Iterator接口是负责定义访问和遍历元素的接口
List接口
ArrayList集合类对数组进行了封装,实现了长度可变的数组,Arraylist存储数据的方式和数组相同,都是在内存中分配连续的空间,它的优点在于遍历元素和随机访问元素的效率比较高
List接口定义的各种常用方法
方法名称· | 说明 |
boolean add(Object obj) | 在列表的末尾顺序添加元素,起始索引位置从 0 开始 |
void add(int index,Object obj) | 在指定的索引位置元素注意:索引位置必须介于 0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素注意:取出的元素是 Object类型,使用前需要进行强制类型转换 |
boolean contains(Object obj) | 判断列表中是否存在指定元素 |
boolean remove(Object obj) | 从列表中删除元素 |
Object remove(int index) | 从列表中删除指定位置元素,起始索引位置从 0 开始 |
例子:
定义一个类Person
package cn.practice1; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
在main方法中创建对象,保存ArrayList集合中
import java.util.ArrayList;
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Person person =new Person(); person.setName("哈哈"); person.setAge(55); Person person2 =new Person(); person2.setName("吼吼"); person2.setAge(22); ArrayList<Person> list=new ArrayList<Person>(); //向集合中添加对象 list.add(person); list.add(person2); //遍历集合 for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getName()); } for (Person person3 : list) { System.out.println(person3.getName()); } }
LinkedList集合类
方法名称 | 说明 |
void addFirst(Object o) |
在列表的首部添加元素 |
void addLast(Object o) |
在列表的末尾添加元素 |
Object getFirst() |
返回列表中的第一个元素 |
Object getLast() |
返回列表中的最后一个元素 |
Object removeFirst() |
删除并返回列表中的第一个元素 |
Object removeLast() |
删除并返回列表中的最后一个元素 |
例子:
package cn.practice1; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
import java.util.LinkedList; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Person person =new Person(); person.setName("哈哈"); person.setAge(55); Person person2 =new Person(); person2.setName("吼吼"); person2.setAge(22); LinkedList<Person> linkedList=new LinkedList<Person>(); //向LinkedList添加元素 linkedList.add(person); linkedList.add(person2); //遍历LinkedList for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i).getName()); } }