java 数据结构详解,数组,集合,HashMap

链表增删效率高,查找效率低。每一个数据项与数组相比更耗内存。不需要整块内存块,不会造成碎片化。

数据结构之哈希表


哈希表就是一种以键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。


LinkedList的队列与栈性质

这里简单提一下。

队列:一种数据结构,最明显的特性是只允许队头删除,队尾插入。


栈:同样是一种数据结构,特性是插入删除都在栈的顶部。


存储时key类型是不确定的,可能是int,可能是String,也可能是其他任意对象。Hash函数的作用就是把这些对象通过合理的方式转为int类型,从而完成数据的存储。

1、数组

数组声明方式有两种

(1)

String [] arrays = {“ab”,“ac”,“cc”,“66”,“+++”};

arrays[3]=“99”;//更改值

(2)

String [] arrays =new  String[5];

arrays[3]=“99”;//赋值

1、2删除元素方法。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

public static String[] delete(int index, String array[]) {

//数组的删除其实就是覆盖前一位

String[] arrNew = new String[array.length - 1];

for (int i = index; i < array.length - 1; i++) {

array[i] = array[i + 1];

}

//            System.arraycopy(array, 0, arrNew, 0, arrNew.length);

return arrNew;

}

public static String[] delete2(int index, String array[]) {

//数组的删除其实就是覆盖前一位

String[] arrNew = new String[array.length - 1];

for (int i = 0; i < array.length - 1; i++) {

if (i < index) {

array[i] = array[i];

} else {

array[i] = array[i + 1];

}

}

return arrNew;

}

1、3调用删除。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

delete2(1,arrays);//调用delete方法

for(int i=0;i<arrays.length;i++){

System.out.print("    de==="+arrays[i]);

}

结果:  de=ab    de=cc    de=66    de=+++    de===+++

1、4数组排序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

int[] a={1,4,-1,5,0};

Arrays.sort(a);

for(int i=0;i<a.length;i++){

System.out.print("    de==="+a[i]);

}

结果:    de===-1    de=0    de=1    de=4    de=5

1、5数组倒序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

int[] a={1,4,-1,5,0};

Arrays.sort(a);

int [] daoxu =new int[a.length];

for(int i=0;i<a.length;i++){

daoxu[a.length-i-1] = a[i];

//                    System.out.print("    de==="+a[i]);

}

for(int i=0;i<daoxu.length;i++){

System.out.print("    daoxu==="+daoxu[i]);

}

结果: daoxu=5    daoxu=4    daoxu=1    daoxu=0    daoxu===-1

2、集合

list集合声明

//    static List list2=new ArrayList<>();

//    static List list2=new LinkedList<>();

static List list2=new Vector<>();

set集合说明

Set test = new HashSet<>();

可以 test.add(null);

Set test = new TreeSet();

不可以  test.add(null);

说明:

List中的元素有存放顺序,并且可以存放重复元素,检索效率高,插入删除效率低

LinkedList中元素位置是任意的,所以执行插入删除操作效率较高,查询效率较低

Vector多个线程同时访问不会发生不确定的结果,但是它的效率会比较低,如果要考虑线程安全的话可以用它。

Set没有存放顺序,而且不可以存放重复元素,后来的元素会把前面重复的元素替换掉,检索效率低,插入删除效率高

Set存储位置是由它的HashCode码决定的,所以它存储的对象必须有equals()方法,而且Set遍历只能用迭代,因为它没有下标

HashSet是使用Hash表实现的,集合里面的元素是无序得,可以有null值,但是不能有重复元素。

TreeSet是用二叉树结构实现的集合,集合中的元素是有顺序得,不允许放入null,同样不能放入重复元素。

2、2集合操作

| Sr.No. | Method & Description |

| — | — |

| 1 |

add( )         向集合中添加元素

|

| 2 |

clear( )        去掉集合中所有的元素

|

| 3 |

contains( )    判断集合中是否包含某一个元素

|

| 4 |

isEmpty( )    判断集合是否为空

|

| 5 |

iterator( )    主要用于递归集合,返回一个Iterator()对象

|

| 6 |

remove( )    从集合中去掉特定的对象

|

| 7 |

size( )        返回集合的大小

|

list2.add(“aaa”);

list2.add(“bbb”);

list2.add(“ccc”);

list2.add(“111”);

list2.add(“111”);

list2.remove(2);//删除元素

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

image

.add(“111”);

list2.add(“111”);

list2.remove(2);//删除元素

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

[外链图片转存中…(img-1jWBa45J-1714315243249)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值