Java小白学习笔记(九)——集合

集合
集合类也称为容器类,用来存储对象

与数组比较:
数组定长,集合大小可以动态调整
数组中元素可以是基本数据类型和引用类型,集合中只能存储引用类型

集合框架
Collection:接口、数据(对象)无序、可重复
List:接口,是Collection接口的子接口,有序(数据存入的顺序与数据存储顺序相同) 可重复
set:接口,是Collection接口的子接口,无序,不可重复
Map:接口,键值对存储
Iterator:接口,对Collection接口数据进行遍历

ArrayList
List接口的实现类
数据线性存储,特性跟数组相近,简称:动态数组
构造方法:
ArrayList():初始量为10的空集合
ArrayList(int capacity):创建一个初始容量为capacity的空集合

常用方法:
add(Object):把元素添加到最后
get(int index):根据索引号得到对应的元素,返回Object类型
注意:index应在集合对象下标范围内
add(int index,Object obj):把元素插入到index位置,index不能超过集合中的元素的个数
size():得到集合中元素的个数
contains(Object obj):判断集合中是否包含参数指定的对象,包含返回true,否则
返回false,注意:使用对象的equals()方法进行比较
toArray():把集合中的元素导出到数组中,该方法返回导出的数组
set(int index,Object obj):判在指定索引处,用obj替换原来对象
remove(int index):移除指定位置的元素
remove(Object obj):调用equals()移除参数指定的单个元素(如果移除一个元素后,比较终止)
indexOf(Object obj):查找对象第一次出现的位置,返回索引号,没有找到返回-1
lastIndexOf(Object obj):查找对象最后一次出现的位置,返回索引号,没有找到返回-1
优缺点:
优点:随机访问速度快(就是根据索引号来访问元素)
缺点:插入和删除效率不高(插入和删除元素后,有可能要移动大量元素)

LinkedList
List接口等实现类
数据结构使用双向链表,元素不要求连续存储
常用方法:
a)addFirdst(Object obj):把元素插入到第一个元素处
b)addLast(Object obj):把元素插入到最后一个位置处
c)getFirst():得到第一个
d)getLast():得到最后一个
e)removeFirst();移除第一个元素
f)removeLast():移除最后一个元素
优缺点:
优点:插入和删除节点速度快
缺点:随机访问效率不高

使用ArrayList还是LinkedList,取决于:对选择的数据结构做何等操作比较多
1)插入和删除节点多,用LinkedList
2)随机访问比较多:选择ArrayList
他们的主要不同点:数据存储结构不同

Set接口
HashSet:set接口的实现类
HashSet():创建了一个容量为16的空间

常用方法
add(Object):添加元素
remove(Object):移除元素
size():得到元素的个数
isEmpty():是否为空集合(size()==0)
clear():清空几何元素
contains(object):判断元素是否存在

Iterator:迭代器,对Collection接口的元素进行遍历操作
1.所有实现了Collection接口的集合都会有一个方法:iterator(),返回实现了Iterator接口的对象

迭代器是为了遍历操作设计的,能够从集合中取出元素和一出元素,没有添加元素的方法

方法:
boolean hashNext():判断游标右边是否有元素,有就返回true
Object next():返回游标右边的元素,并将游标移动到下一个位置
void remove():删除游标左边的元素,在执行完next操作后,该操作只执行一次

Map接口
HashMap类:Map接口的实现类,键值对存储,键不能重复,值可以重复,键可以为null
常用方法:
put(key,vlaue):将键和值存储到map集合中,如果key存在,则替换值
Object get(key):根据key,取value值
remove(key):根据key,移除键值对
containsKey(key):判断是否包含指定的键,包含返回true
containsValue(value):判断是否包含指定的值
size():得到键值对的个数
Set keySet():得到键的集合
Collection values():得到值的集合(Collection类型)
Set entrySet():得到键值对的集合

泛型的使用
非泛型集合问题:
添加对象的时候,对象被向上转型为Object类型
在从集合中取出数据的时候,需要进行强制转换为对象的实际类型,在运行时,可能会报错
泛型集合:在对象放入集合的时候,编译器进行类型检查,类型不同,不能存放入集合中,编译报错

泛型集合也称为参数化类型,它能够像方法一样,接受不同类型的参数

泛型集合的定义
ArrayList 变量名;T为某种类型

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值