Java-集合总结

一、集合框架概述

***Java提供了实现各种数据结构操作的集合类,操作起来非常方便。Java的集合由两种类型构成,一种是Collection,用于存储一组对象;另一种是Map,用于存放键值对的对象。

***Collection接口是最基本的集合类接口,它有三个子接口:Set接口、List接口和Queue接口。Collection接口定义的方法如下:

Collection接口定义的方法
方法申明功能描述
boolean add(E e)将对象加入集合
boolean remove(Object o)从这个集合中移除指定元素的一个实例
void clear()从这个集合中移除所有的元素
Iterator<E>iterator()回此集合中的元素的迭代器
int size()返回此集合中的元素的数目
Object[] toArray()返回包含此集合中的所有的元素的数组
boolean contains(Object o)返回true,当且仅当这个集合包含至少一个元素

二、List 接口简介

2.1 List 接口

***List接口是collection接口的子接口,它实现的是一种线性表的数据结构。List接口是有序的集合,能够精确的控制元素的插入位置,存放在List接口的所有元素可以通过类似于数组下标的方式访问,List接口允许存入相同的元素

List接口简介
ArrayList类

是List接口的实现类,在它内部封装了一个长度可变的数组对象。它能快速地随机访问各个元素,但在插入和删除元素时,需要动态重建数组。

add():往集合类中添加对象,如果当前位置有元素的话,将当前处于该位置的元素和所有后续元素向右移动,也就是索引加1。

get():通过下标索引获得集合内部的元素。

LinkList类

LinkList集合内部维护了一个双向循环列表,与ArrayList集合相比,LinkList在添加和删除元素是非常快的。

LinkList类定义的一些特有方法:

Void addFirst(Object o):将指定元素插入列表头部

Void addLast(Object o):将指定元素插入列表尾部

Object getFirst():返回列表中的第一个元素

Object getLast():返回列表中的最后一个元素

Object removeFirst:删除并返回列表中的第一个元素

Object removeLast():删除并返回列表中的最后一个元素

void add(int index,E element):在列表中指定的位置上插入指定的元素

2.2 Iterator接口

***在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口是在集合类内部实现的,隐藏了各种集合类内部的实现细节,并对外实现该接口的对象,用于迭代的遍历Collection接口中的元素,也称为迭代器。需要遍历Collection集合,就要获取该迭代器来完成迭代操作。

***Collection 接口的Iterator()方法返回一个Iterator接口,然后通过Iterator接口的hsaNext()和next()方法实现集合的遍历。

三、Set 接口

***与List接口一样,Set接口继承了Collection接口,它以某种规则保证存入集合内的元素不出现重复。同时,Set接口中的元素是无序的,因此没有List接口的get方法,不能使用下标访问集合中的元素。Set接口主要有两个实现类,分别是HashSet集合和TreeSet集合。

Set接口实现类
Set接口简介
HashSet集合

该集合底层由HashMap实现,当向HashSet集合中添加元素时,会调用对象的hashCode()方法来计算哈希值,根据该值确定确定元素在集合中的存储位置。由于用到了散列函数,因此存储速率非常块。

HashSet集合中判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回值也相等。

TreeSet集合

TreeSet集合底层是使用TreeMap实现的,其中存放的元素是以compareTo()方法的返回值进行排序的,因此TreeSet集合是有序的。

与HashSet集合一样,不允许重复值,但保证不重复的关键因素不是equals()方法和HashCode()方法,而是comepareTo()方法。

四、Map接口

***Map接口用来存储键值对的对象,提供键(key)到值(value)的映射。从Map集合中访问元素时,只要指定了key,就能得到对应的value。Map接口定义的常用方法如下:

Map接口的常用方法
方法功能描述
void clear从集合中移除所有的映射
V put(K key,V value)将指定的值与此映射中的指定键关联
V get(Object key)返回指定的键映射的值
boolean containsKey(Object value)如果此集合中包含指定键的映射,则返回true
boolean containsValue(Object value)如果此集合中包含指定将一个或多个键映射到值,则返回true
Collection<V>value()返回此集合中包含的值的Collection集合
Set<K>keySet返回此集合中包含的键的Set集合

***HashMap类和TreeMap类实现了Map接口,HashMap类通过hashCode()方法对其内部映射关系进行快速查找,而TreeMap类中的映射关系都保持着某种固定的顺序,如果需要得到一个有序的集合,就应该使用TreeMap类,否则就用HashMap类,因为HashMap类在添加和删除映射关系方面更高效。

***Properties类主要用来存储字符串类型的键值对,经常用来存储应用程序的配置信息,如用户的设置信息,程序运行的相关信息等。Properties类是HashTable的子类,它可以从输入流中获得键值对信息,能够将键值对保存到输入流中。主要的方法如下。

Properties常用方法
方法功能描述
getproperty(String key)通过参数key,得到key所对应的value
load(IntputStream inStream)从输入流中读取属性列表,也就是从文件中获得键值对,以供getProperty(String key)来搜索
setProperty(String key,String value)通过调用父类的put()方法来设置键值对
store(OutputStream out,S听comments)与load()方法相反,该方法键值对写写入指定的文件中
clear()清除所有装载的键值对,该方法由父类提供
Enumeration<?>propertyNames()返回properties类中的key值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值