当前位置: 首页 > news >正文

常用的数据结构 JAVA

目录

  • 1、线性表
  • 2、栈:
  • 3、队列:

1、线性表

List<Object> narnat = new ArrayList<>();

ArrayList:动态数组

1、可以嵌套使用

2、add(x)添加元素x,remove(index)删除某个位置的元素

3、注意list是指向性的,在不确定被指向元素是否会发生变动,最好复制一下被指向元素

List<Integer> none  = new ArrayList<>();
List<List<Integer>>end  = new ArrayList<>();
end.add(new ArrayList<Integer>(none));
//为了防止none后续会变动,这里直接复制none

1、Java中List类应该主要是一些方法, 方法的实现应该是在ArrayList类中实现

类似下方的A类B类代码:

import java.util.*;    
public class Main {         public static void main(String args[]) {        int array[] = {1, 2, 3};A<int []> xxf = new B<>();xxf.swapp(array);//xxf只能调用A类方法无法调用B类}
}class A <T> {public void swapp(T a) {B<T> d = new B<T>();d.address(a);}
}class B <T>  extends A <T> {public void address(T a) {System.out.println(a);}
}

2、List类是一个接口类,所以不能面向对象自己,里面只存储与线性表相关的相关方法所以比较方便

3、而ArrayList类中存在与线性表无关的方法,为了防止用户调用到错误的方法,所以创建的对象是以List开头

代码:

import java.util.*;    
public class Main {         public static void main(String args[]) {        A c = new B();A d = c;//d只能调用A类方法 B f = new B();//f,A, B方法都可以调用A g = f;//g也只能调用A类方法}
}class A <T> {public void swapp(T a) {B<T> d = new B<T>(); d.address(a);}public void sxx() {}
}class B <T>  extends A <T> {public void address(T a) {System.out.println(a);}
}
遇到:
public void map(List<Integer> qu){
}List<Integer> xx = ArrayList<>();map(xx);
我的理解是:
List<Integer> qu = xx = ArrayList<>();       

代码:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.*;
//需要将读书页面大小调至67%
public class Main {public static void main(String[] args) throws AWTException {ArrayList<Integer> qu = new ArrayList<>();swap(qu);System.out.println(qu);}public static void swap (List<Integer> aa) {aa.add(1);} 
}

4、个人理解:qu是ArrayList类创建的,但传参 变成List aa = qu = ArrayList<>(); 朴素来理解即aa虽然是ArrayList生的,是List养的,所以受List限制

这里也证实qu和aa调用的函数范围是不同的:

在这里插入图片描述

在这里插入图片描述

2、栈:

java推荐使用:Deque stack = new ArrayDeque<Integer>();

Deque:双向队列

1、add(x)将x放在栈顶(最后),push(x)将x放在栈首(末尾)offer(x),将x放在栈首

2、peek()、poll()、peekFirst()、pollFirst()都是对首元素进行操作这是易错点

3、peekLast(), pollLast()才是对栈顶元素操作,这么设计因为可以当队列使用尽管一般队列不用它

3、队列:

Queue qu = new LinkedList<Integer> ();

LinkedList : 链表

1、先进先出

2、peek(x) : 显示首部元素,poll():删掉并返还首部元素

http://www.lryc.cn/news/95922.html

相关文章:

  • 基于机器视觉工具箱和形态学处理的视频中目标形状检测算法matlab仿真
  • 小白入门:sentence-transformer 提取embedding模型转onnx
  • 数据库应用:Redis持久化
  • js版计算比亚迪行驶里程连续12个月计算不超3万公里改进版带echar
  • 一文详解Spring Bean循环依赖
  • 基于PHP+ vue2 + element +mysql自主研发的医院不良事件上报系统
  • 微服务远程调用openFeign简单回顾(内附源码示例)
  • 【云计算小知识】云环境是什么意思?有什么优点?
  • 【搜索引擎Solr】Apache Solr 神经搜索
  • PostgreSQL 设置时区,时间/日期函数汇总
  • 性能测试Ⅱ(压力测试与负载测试详解)
  • 【Python入门系列】第十八篇:Python自然语言处理和文本挖掘
  • 【GD32F103】自定义程序库08-DMA+ADC
  • 集成了Eureka的应用启动失败,端口号变为8080
  • CMU 15-445 -- Timestamp Ordering Concurrency Control - 15
  • MURF2080CT/MURF2080CTR-ASEMI快恢复对管
  • 去除 idea warn Raw use of parameterized class ‘Map‘
  • 使用BERT分类的可解释性探索
  • web APIs-练习二
  • rpc通信原理浅析
  • 【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier
  • Spring Security 6.x 系列【64】扩展篇之多线程支持
  • Elasticsearch 简单搜索查询案例
  • 【RabbitMQ(day1)】RabbitMQ的概述和安装
  • Too many files with unapproved license: 2 See RAT report
  • Windows11的VTK安装:VS201x+Qt5/Qt6 +VTK7.1/VTK9.2.6
  • 大数据时代个人信息安全保护小贴士
  • windows 修改 RDP 远程桌面端口号
  • 面试题-TS(四):如何在 TypeScript 中使用类和继承?
  • React之JSX的介绍与使用步骤,注意事项,条件渲染,列表渲染以及css样式处理