Java 基础知识二(数据结构实现类)

Java  Collection Framework

JCF主要的数据结构实现类
-列表(List, ArrayList, LinkedList)
-集合(Set, HashSet,TreeSet, LinkedHashSet)

-映射(Map, HashMap, TreeMap, LinkedHashMap)

·ICF主要的算法类
-Arrays:对数组进行查找和排序等操作

-Collections:对Collection及其子类进行排序和查找操作

LIST
ArrayList


以数组实现的列表,不支持同步

-利用索引位置可以快速定位访问

-不适合指定位置的插入、删除操作

适合变动不大,主要用于查询的数据
和Java数组相比,其容量是可动态调整的

ArrayList在元素填满容器时会自动扩充容器大小的50%

使用for 循环速度较快

Iinkedlist:


-以双向链表实现的列表,不支持同步
-可被当作堆栈、队列和双端队列进行操作

-顺序访问高效,随机访问较差,中间插入和删除高效适用于经常变化的数据

Vector(同步)
-和ArrayIist类似,可变数组实现的列表

-Vector同步,适合在多线程下使用原先不属于]CF框架,属于Java最早的数据结构,性能较差从JDK1.2开始,Vector被重写,并纳入到JCF

官方文档建议在非同步情况下,优先采用ArrayList

Set


对任意对象都能判定其是否属于某一个集合确定性:

互异性集合内每个元素都是不相同的,注意是内容互异
无序性:集合内的顺序无关

HashSet(基于散列函数的集合,无序,不支持同步)

TreeSet(基于树结构的集合,可排序的,不支持同步)

LinkedHashSet(基于散列函数和双向链表的集合,可排序的,不支持同步)

HashSet

基于HashMap实现的,可以容纳null元素,不支持同步

Set s=Collections.synchronizedSet(new HashSet(...));
add 添加一个元素
clear 清除整个HashSet
contains 判定是否包含一个元素remove删除一个元素size 大小
retainAll 计算两个集合交集

IinkedHashSet


继承HashSet,也是基于HashMap实现的,可以容纳null元素
-不支持同步
Set s= Collections.synchronizedSet(new IinkedHashSet(...));

方法和HashSet基本一致
add, clear, contains, remove, size通过一个双向链表维护插入顺序

TreeSet


基于TreeMap实现的,不可以容纳null元素,不支持同步SortedSet s= Collections.synchronizedSortedSet(new TreeSet(...)),

add 添加一个元素clear 清除整个TreeSet
contains 判定是否包含一个元素
remove 删除一个元素size 大小
根据compareTo方法或指定Comparator排序

HashSet,LinkedHashSet,TreeSet的元素都只能是对象

HashSet和IinkedHashSet判定元素重复的原则

判定两个元素的hashCode返回值是否相同,若不同,返回false

若两者hashCode相同,判定equals方法,若不同,返回false;否则返回true。
-hashCode和equals方法是所有类都有的,因为Object类有

这3个方法三位一体equals()是相同的;hashCode()是相同的:toString()也应该是相同的

TreeSet判定元素重复的原则
需要元素继承自Comparable接口

比较两个元素的compareTo方法

Map映射


数学定义:两个集合之间的元素对应关系
一个输入对应到一个输出
{1,张三},{2,李四},{Key,Value},键值对,K-V对
·Java中Map
-Hashtable(同步,慢,数据量小)
-HashMap(不支持同步,快,数据量大)
Properties(同步,文件形式,数据量小)

Hashtable


-K-V对,K和V都不允许为null
同步,多线程安全
无序的
适合小数据量
主要方法:clear,contains/containsValue, containsKey, get,
put,remove, size

HashMap


K-V对K和V都允许为null
-不同步多线程不安全
Map m= Collections.synchronizedMap(new HashMap(...));

-无序的
主要方法:clear,containsValue,containsKey,get,put,remove, size

LinkedHashMap


-基于双向链表的维持插入顺序的HashMap


TreeMap


-基于红黑树的Map,可以根据key的自然排序或者compareTo方法进行排序输出

Properties


-继承于Hashtable
可以将K-V对保存在文件中
适用于数据量少的配置文件
继承自Hashtable的方法:clear,contains/containsValue,containsKey.get, put,remove, size
从文件加载的load方法,写入到文件中的store方法

获取属性 getProperty,设置属性setProperty

public static void WriteProperties(string filePath, string pKey, string pValue)IOExcelthrows
{
    File file = new File(filePath);
    if(!file.exists()){
        file.createNewFile();
    }
    Properties pps = new Properties();
    InputStream in= new FileInputstream(filePath);//从输入流中读取属性列表(键和元素对)
    pps.load(in);
//调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。/制要求为属性的键和值使用字符串。返回值是Hashtable 调用 put 的结果。
    Outputstream out =new File0utputstream(filePath);
    pps.setProperty(pKey,pValue);//以适合使用 1oad方法加载到Properties 表中的格式,//将此Properties表中的属性列表(键和元素对)写入输出流
    pp5.store(out,"Update "+ pKey +" name");
    out.close();

}
JCF中工具类


不存储数据,而是在数据容器上,实现高效操作
·排序
·搜索
Arrays 类
Collections类

Arrays :


排序:对数组排序,sort/parallelSort。
查找:从数组中查找一个元素,binarySearch。
批量拷贝:从源数组批量复制元素到目标数组,copyOf
批量赋值:对数组进行批量赋值,fill。
等价性比较:判定两个数组内容是否相同,equals。

Collections:

处理对象是 Collection及其子类
-排序:对List进行排序,sort。
-搜索:从List中搜索元素,binarySearch
-批量赋值:对Iist批量赋值,fill。
最大、最小:查找集合中最大/小值,max,min-

-反序:将List反序排列,reverse

对象比较

对象实现Comparable接口(需要修改对象类)
compareTo方法
。>返回1,==返回0,<返回-1

Arrays和Collections在进行对象sort时,自动调用该方法·

新建Comparator(适用于对象类不可更改的情况)

compare方法
。>返回1,==返回0,<返回-1
Comparator比较器将作为参数提交给工具类的sort方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

larance

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值