集合框架与泛型(一)

集合框架和泛型

  • 集合框架与泛型(一)
    • 为什么使用集合框架
    • Java集合框架包含的内容
  • Collections、List、Set和Map
    • 特点
    • Collections
    • List
      • ArraysList
      • LinkedList
      • LinkedList和ArrayList异同
      • 如何遍历List
    • Set
      • 如何遍历set

集合框架与泛型(一)

为什么使用集合框架

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

Java集合框架包含的内容

集合框架与泛型(一)_第1张图片
虚线框为接口或子接口,实线框为具体的实现类。
Utilities中提供了对集合进行排序、遍历等多种算法实现

Collections、List、Set和Map

特点

Collection接口存储一组可重复,无序的对象
List接口存储一组可重复,有序(插入的顺序)的对象
Set接口存储一组不可重复,无序的对象
Map接口存储一组键值对象,提供key到value的映射

Collections

常用方法有clear()、isEmpty()、iterator()、toArray()

List

List的实现类有ArrayList和LinkedList

ArraysList

ArraysList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。
在这里插入图片描述
常用方法:

方法名 说明
boolea 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) 从列表中删除元素
Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始
Object set(int index,Object o) 指定下标进行修改其中的元素,返回的是修改前的对象

LinkedList

LinkedList采用链表存储方式,插入、删除元素时效率比较高
常用方法:

方法名 说明
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一格元素
Object getLast() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removeLast() 删除并返回列表中的最后一个元素

在这里插入图片描述

LinkedList和ArrayList异同

相同点:
同为List实现类,元素有序可重复,长度可变
共有Collections以及List的通用方法
不同点:
ArryaList实现了长度可变的数组,在内存中分配连续空间,遍历元素和随机访问元素的效率比较高。
LinkedListc采用链表存储方式,插入、删除元素时的效率比较高。

如何遍历List

1、采用下标遍历

for(int i=0;i<list.size();i++){
	System.out.println(list.get(i));
}

2、使用增强for遍历
for(Object obj:list){
System.out.println(o);
}
3、使用Iterator迭代器遍历List

Iterator itor=list.iterator();
while(itor.hasNext()){
	System.out.println(itor.next());
}

Set

特点:
Set接口存储一组无序不可重复的对象
HashSet是Set接口常用的实现类
Set中存放对象的引用
集合框架与泛型(一)_第2张图片
所打印的结果是为2,因为s1、s2对象的引用同为字符串java。

如何判断加入的对象是否已经存在?
采用对象的equals()方法比较两个对象是否相等

如何遍历set

set接口不存在get()方法,所以不能采用下标遍历
1、使用增强for遍历
2、使用Iterator迭代器遍历

你可能感兴趣的:(java)