java常用集合之数组和链表

1、以下简单的聊下数组的含义及优缺点。

1.1 什么是数组:用连续的内存空间去存储相同类型的数据的集合。

1.2 数组的优点:数组本身有下标的概念,在查询数据时根据下标去查询,查询效率比较高,像算法二分查找去查询数据,其时间复杂度为o(1)。

1.3 数组的缺点:数组比较消耗内存,而且需要连续存储空间,在对数组进行增、删时需要向前和向后搬移,而且数组不能动态进行扩容操作,使用不当会出现角标越界的异常。

public class Test1 {
    public static void main(String[] args) {
         int [] a= {1,2,6,6,5};//数组
         HashMap<Integer, Integer> hashMap = new HashMap<>();
         for (int i = 0; i < a.length; i++) {
            if(hashMap.containsKey(a[i])) {
                int val=hashMap.get(a[i]);
                hashMap.put(a[i], val+1);
            }else {
                hashMap.put(a[i], 1);
            }
        }
         System.out.println(hashMap);
    } 
}

2、链表,这里我们聊下单向链表

2.1 链表这种数据结构的设计有头尾的概念,与之对应的方法中就有了getLast()和getFirst()获取链表的头尾节点的值,链表有了节点的概念,每一个节点存储本节点的数据和下一个节点的地址的指针域。

2.2 链表的优点:因为链表的节点的一部分会去存储下一节点的地址指针域,所以根据地址去做删除和更新相对较快。

2.3 链表的缺点:从链表里查询数据时,每次都会从链表的头节点一直找到链表的尾节点,所以查询效率相对较低。

public class Test3 {
    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("a");
        linkedList.add("b");
        linkedList.add("c");
        for (String string : linkedList) {
            System.out.println(string);
        }
        System.out.println(linkedList.getLast());
        System.out.println(linkedList.getFirst());
    }
}
 

对以上的总结:在实际开发应用中,如果对数据的查询操作比较多的话这两种数据结构中推荐使用数组,如果对数据的增删想对较多,且对查询效率要求不是很高的话推荐使用单向链表,欢迎大家讨论指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值