链表增删效率高,查找效率低。每一个数据项与数组相比更耗内存。不需要整块内存块,不会造成碎片化。
数据结构之哈希表
哈希表就是一种以键-值(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成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
.add(“111”);
list2.add(“111”);
list2.remove(2);//删除元素
总结
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。
架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。
如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。
[外链图片转存中…(img-1jWBa45J-1714315243249)]