java数据结构

java数据结构

数组

是一个存放多个数据的容器

数据是同一种类型

所有的数据是线性规则排序

可以通过位置索引来快速定位访问数据

需要明确容器的长度

int[] a = new int[5]{};

JCF(java collection framework)

容器:能够存放数据的空间结构

容器框架:有一些容器,并且在这些容器上有算法实现,提高数据存储效率,避免程序员的重复劳动。

主要分为三大类:列表List、散列集合Set 以及映射Map

JCF的集合接口是Collection

collection下的方法:

add();//增加元素
contains();//包含
remove();//删除
size();//数据元素个数

iterator迭代器下的方法:

-hasNext

-next

-remove

List列表

-有序的collection

-允许有重复的元素

主要实现:ArrayList、LinkedList、Vector

ArrayList特性

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

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

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

适合变动不大,主要用于查询数据

和Java数组相比,其容量是可以动态调整的

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

在对ArrayList遍历的时候推荐使用for-each遍历

LinkedList特性

以双向链表实现的列表,不支持同步

可被当成堆栈、队列、和双端队列进行操作

顺序访问高效,随机访问较差,中间插入和删除高效

适用于经常变化的数据

		LinkedList<Integer> l1 = new LinkedList<Integer>();
        l1.add(3);
        l1.add(2);
        l1.add(5);
        l1.add(30);
        l1.add(31);
        System.out.println(l1.size());
        l1.addFirst(5);
        l1.addLast(0);
        l1.remove(1);

        Iterator<Integer> iterator = l1.iterator();
        while(iterator.hasNext()){
            iterator.next();
        }

        for (Integer integer : l1) {
            System.out.println(integer);
        }
Vector

和ArrayList类似,可变数组实现的列表

同步,适合在多线程下使用

Set集合

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

互异性:集合内每个元素都是不同的

无序性:集合内的顺序无关

HashSet

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

内部时基于HashMap实现的,可以容纳NULL元素

在这里插入图片描述

LinkedHashSet

继承自HashSet 也是基于HashMap实现的,可容纳null元素

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

方法跟HashSet基本一致

HashSet与LinkedHashSet判定元素重复的原则:
1.首先判定两个元素的hashCode返回值是否相同,若不同,返回false
2.若两者的hashCode相同,判定equals方法,若不同,返回false,否则返回true
TreeSet

基于树结构的集合,可排序,不支持同步,不可容纳null元素

按照所存储对象大小升序输出

添加到TreeSet的元素必须实现Comparable接口,而实现Comparable接口必须实现compareTo方法
TreeSet判定规则是根据compareTo返回值来确定的,

Map映射

数学定义:两个集合之间的元素对应关系。

一个输入对应一个输出。

HashMap

不支持同步,速度快,适合数据量大

k-v对,k与v都允许为空

主要方法:与Hashtable大致一样

遍历:通过迭代器遍历

			HashMap<Integer,String> hm = new HashMap<>();
	        hm.put(1,"hi");
            Integer key;
            String value;
            Iterator<Integer> iter = hm.keySet().iterator();
            while(iter.hasNext()){
                    key = iter.next();
                    value = hm.get(key);
                    System.out.println(key+value);
            }
Hashtable

同步,慢,数据量小,线程安全的,无序的

k-v对 K和V都不允许为null

主要方法:

在这里插入图片描述

Properties

同步,文件形式,数据量小

继承自Hashtable,唯一一个将KV对保存在文件当中

主要方法:

在这里插入图片描述

LinkedHashMap

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

HashMap的遍历时无序的
LinkedHashMap遍历的顺序和它插入的顺序保持一致
TreeMap遍历的顺序时按照大小或者compareTo方法规定的
TreeMap

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

数据结构类的工具类

不存储数据,而是在数据容器上,实现高效操作

主要是排序与搜索

Arrays

处理对象是数组

排序:对数组排序,sort/parallelSort

查找:从数组中查找一个元素,binarySearch(二分法查找)

批量拷贝:从原数组批量复制元素到目标数组,copyOf

批量赋值:不用再写for循环,fill

等价比较:判断两个数组内容是否一样,equals

Collections

排序:对List排序,sort

查找:从List中查找一个元素,binarySearch(二分法查找)

批量赋值:fill

最大最小:查找集合中最大/最小值 max,min

反序:将List反序排列 reverse

对象比较

对象实现Comparable接口:

实现compareTo方法:

">"返回1,==返回0,<返回-1;

赋值:不用再写for循环,fill

等价比较:判断两个数组内容是否一样,equals

Collections

排序:对List排序,sort

查找:从List中查找一个元素,binarySearch(二分法查找)

批量赋值:fill

最大最小:查找集合中最大/最小值 max,min

反序:将List反序排列 reverse

对象比较

对象实现Comparable接口:

实现compareTo方法:

">"返回1,==返回0,<返回-1;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值