2024年java 数据结构详解,数组,集合,HashMap,系统压力暴增的情况下是如何一步步优化MySQL

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

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

需要这份系统化的资料的朋友,可以点击这里获取

结果:    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);//删除元素

list2.add(2, “插入icom”);//插入元素。先删除再插入就是替换元素

for(int i=0;i<list2.size();i++){

System.out.print("    ==="+list2.get(i));

}

结果是:    ===aaa   ===bbb   ===插入icom   ===111   ===111

Set遍历:使用迭代方法

Set test = new HashSet<>();

int c = 3;

int d = 9;

int e = 2;

test.add©;

test.add(d);

test.add(e);

test.add(null);

Iterator value = test.iterator();

while (value.hasNext()) {

//                 int s = value.next();

System.out.print(value.next()+" ");

}

结果:null 2 3 9  ——默认排序了

数组转集合:https://blog.csdn.net/meixi_android/article/details/82221089

3、HashMap

存储键值对我们首先想到HashMap,它的底层基于哈希表,采用数组存储数据,使用链表来解决哈希碰撞,它是线程不安全的

HashMap允许空键值,并且它是非线程安全的,所以插入、删除和定位元素会比较快。

Map map=new HashMap();

map.put(3, “sss”);

map.put(2, 6666);

map.put(“c”, null);

map.put(null, “ddd”);

System.out.println(map.get(3));

//遍历

Iterator iterator = map.keySet().iterator();

while (iterator.hasNext()) {

Object key = iterator.next();

System.out.println(“map.get(key) is :”+map.get(key));

}

结果:sss

map.get(key) is :ddd

map.get(key) is :6666

map.get(key) is :sss

map.get(key) is :null

TreeMap不允许空键值,TreeMap是基于红黑树实现的,适用于按自然顺序火兹定于顺序遍历key。(键需同类型)。如果你需要得到一个有序的结果你就应该使用TreeMap

Map map=new TreeMap();

map.put(2, “aaa”);

map.put(1, “cccc”);

map.put(4, “bbbbbb”);

map.put(5, “ddd”);

//遍历

Iterator iterator = map.keySet().iterator();

while (iterator.hasNext()) {

Object key = iterator.next();

System.out.println(“map.get(key) is :”+map.get(key));

}

结果:

map.get(key) is :cccc

map.get(key) is :aaa

map.get(key) is :bbbbbb

map.get(key) is :ddd

HashTable是基于HashCode实现的,但它是线程安全的,所以会比HashMap效率低,而且不允许null值。

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

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

需要这份系统化的资料的朋友,可以点击这里获取

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴*

[外链图片转存中…(img-xqtYGuPV-1714839806445)]

[外链图片转存中…(img-JRGh0wiw-1714839806445)]

[外链图片转存中…(img-pOaXXy4N-1714839806446)]

更多笔记分享

[外链图片转存中…(img-flbPY2IW-1714839806446)]

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

需要这份系统化的资料的朋友,可以点击这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值