1、 为什么需要集合框架。
如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象,可以考虑使用JAVA集合框架。
2、 JAVA集合框架由以下三部分组成。
2.1、接口
Collection是最基本的集合接口,一个Collection代表一组元素。
List接口继承自Collection,List是有序集合,充许有相同的元素,使用List能够精确地控制每个元素插入的位置,用户能够使用索引来访问List中的元素,类似于数组。
2.2、具体类
实现List的常用类有ArrayList和LinkedList。它们都可以容纳所有类型的对象,包括null,并且都保证元素的存储顺序。
ArrayList实现了可变大小的数组。它的优点在于遍历元素和随机访问元素的效率比较高。
LinkedList提供了额外的addFirst()、addLast()、removeFirst()、removeLast()等方法,可以在LinkedList的或尾部进行插入或者删除操作。LinkedList采用双向列表存储数据。相较于ArrayList,在插入或删除元素时,LinkedList提供更好的性能。这些方法使得LinkedList可以被用作堆栈(stack)或者队列(queue)。
HashMap是Map接口的实现类,实现一个键到值映射的哈希表。
2.3、JAVA集合框架提供了类Collections,它提供了对集合进行排序等多种算法实现。
3、List接口和ArrayList类
List接口中常用方法
返回类型 |
方 法 |
说 明 |
boolean |
add(Object o) |
在列表的末尾顺序添加元素,起始索引位置从0开始。 |
int |
size() |
返回列表中的元素个数。 |
Object |
get(int index) |
返回指定索引位置处的元素 注意:取出的元素是Object类型,使用前需要进行强类型转换。 |
void |
add(int index,Object o) |
在指定的索引位置添加元素。注意:索引位置必须介于0和列表中元素个数之间。 |
boolean |
contains(Object o) |
判断列表中是否存在指定元素 |
boolean |
remove(Object o) |
从列表中删除元素 |
4、 List接口和LinkedList类
LinkedList中的一些方法
返回类型 |
方 法 |
说明 |
void |
addFirst(Object o) |
在列表的首部添加元素 |
void |
addLast(Object o) |
在列表的末尾添加元素 |
Object |
getFirst() |
返回列表中的第一个元素 |
Object |
getLast() |
返回列表中的最后一个元素 |
Object |
removeFirst() |
删除并返回列表中的第一个元素 |
Object |
removeLast() |
删除并返回列表中的最后一个元素 |
5、 Map接口和HashMap接口
HashMap的常用方法
返回类型 |
方法 |
说明 |
Object |
put(Object key,Object value) |
以“键-值对”的方式进行存储。键必须是唯一的,值可以重复。如果试图添加重复的键,那么最后加入的键-值对将替换掉原先的键-值对。 |
Set |
keySet() |
返回键的集合。 |
Collection |
values() |
返回值的集合。 |
boolean |
containsKey(Object key) |
如果存在由指定的键映射的“键-值对”,返回true。 |
Object |
get(Object key) |
根据键返回相关联的值,如果不存在指定的键,返回null。 |
Object |
Remove(Object key) |
删除由指定的键映射的“键-值对”。 |
6、 toString()方法。
每个类都有toString()方法,从Object类继承而来,toString()方法代表一个类的字符串描述。当执行语句“System.out.println(类对象)”时,会默认调用该类的toString()方法。由于Object中的toString()方法用来输出类的内存地址等信息,因此,有时候为了特殊需要可以重写toString()方法,以便返回需要的内容。
-------------------------------------------------------------------------------
7、 例子代码
ArrayList:
package com.xinxin.testCollection;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ArrayListTest {
public static void main(String[] args) {
FirstLevelTitle ft1 = new FirstLevelTitle(1,"待业","新新",new Date());
FirstLevelTitle ft2 = new FirstLevelTitle(2,"就业","大B炮",new Date());
FirstLevelTitle ft3 = new FirstLevelTitle(3,"已就业","超哥",new Date());
//List接口的实现类ArrayList
List newsTitleList = new ArrayList();
//向集合中添加元素
newsTitleList.add(ft1);
newsTitleList.add(ft2);
newsTitleList.add(1,ft3);
print(newsTitleList);
//判断集合中是否存在指定的元素ft3
if(newsTitleList.contains(ft3)){
System.out.println("包括已就业");
}else{
System.out.println("不包括已就业");
}
System.out.println("删除前、新闻标题数目为:"+newsTitleList.size());
//删除集合中的元素
newsTitleList.remove(0);
System.out.println("删除之后、新闻标题数目为:"+newsTitleList.size());
}
private static void print(List newsTitleList) {
for(int i=0;i<newsTitleList.size();i++){
FirstLevelTitle title = (FirstLevelTitle)newsTitleList.get(i);
System.out.println(i+1+":/nID:"+title.getId());
System.out.print("名称:"+title.getTitleName());
System.out.print("创建者:"+title.getCretor());
System.out.print("创建时间::"+title.getCreateTime()+"/n");
}