麻烦问一下 如何在java中用代码实现arraylist类的功能??package com.nishizhen.list;
public interface List {
public void insert(int i,Object obj)throws Exception;
public void delete(int i)throws Exception;
public Object getData(int i)throws Exception;
public int size();
public boolean isEmpty();
}
顺序表:
顺序表插入一个元素需要移动元素的平均次数为n/2次,删除一个元素需要移动元素次数为(n-1)/2 , 所以顺序表的时间复杂度为O(n) 。
顺序表的实现如下
package com.nishizhen.list;
public class SeqList implements List{
final int defaultSize = 10;
int maxSize;//顺序表的最大长度
int size;//线性表当前长度
Object[] listArray;//存储线性表元素的数组
public SeqList(int size){
initiate(size);
}
public SeqList(){
initiate(defaultSize);
}
public void initiate(int sz){
maxSize = sz;
size = 0;
listArray = new Object[sz];
}
public void insert(int i,Object obj)throws Exception{
if(size == maxSize){
throw new Exception("顺序表已满,不能再插入元素 。");
}
if(i0 || imaxSize){
throw new Exception("参数有误 。");
}
else{
for(int j=size;j=i;j--){
listArray[j] = listArray[j-1];
}
listArray[i] = obj;
size;
}
}
public void delete(int i)throws Exception{
if(size == 0){
throw new Exception("顺序表为空 , 无法进行删除元素操作 。");
}
if(i0 || i=size){
throw new Exception("参数出错 。");//数组下标不能小于0或者大于size,因为size及其以后的元素为空 。
}
else{
for(int j=size-1;j=i;j--){
listArray[j-1] = listArray[j];
}
listArray[listArray.length-1] = "";
size--;
}
}
public Object getData(int i)throws Exception{
if(size == 0){
throw new Exception("顺序表为空,无法返回元素 。");
}
if(10 || i=size){
throw new Exception("参数出错 。");//数组下标不能小于0或者大于size,因为size及其以后的元素为空 。
}
else{
return listArray[i];
}
}
public int size(){
return listArray.length;
}
public boolean isEmpty(){
boolean flag = false;
if(listArray.length==0){
flag = true;
}
return flag;
}
}
单链表:
指针是指一个数据元素逻辑意义上的存储位置,链式存储机构是基于指针实现的,每一个节点由一个数据元素和一个指针构成 。链式存储结构是用指针把相互关联的元素链接起来 。
在单链表中 , 每个节点只有一个直接只想后继元素的指针 , 而双向链表中每个节点有两个指针,一个只想后继节点一个只想前驱节点 。
单链表的实现
节点类:
package com.nishizhen.list;
public class Node {
Object element;
Node next;
Node(Node nextval){
next = nextval;
}
Node(Object obj,Node nextval){
element = obj;
next = nextval;
}
public Node getNext(){
return next;
}
public void setNext(Node nextval){
next = nextval;
}
public Object getElement(){
return element;
}
public void setElement(Object obj){
element = obj;
}
public String toString(){
return element.toString();
}
}
单链表类:
package com.nishizhen.list;
public class LinList implements List{
Node head;//头指针
Node current;//当前操作的节点位置
int size;//数据元素个数
LinList(){
head = current = new Node(null);
size = 0;
}
public void index(int i) throws Exception{
if(i-1 || isize-1){
throw new Exception("参数出错");
}
if(i==-1){
return;
}
current = head.next;
int j = 0;
while((current !=null)ji){
current = current.next;
j;
}
}
public void insert(int i,Object obj)throws Exception{
if(10 || i=size){
throw new Exception("参数错误");
}
index(i-1);
current.setNext(new Node(obj,current.next));
size;
}
public void delete(int i)throws Exception{
if(size==0){
throw new Exception("链表已空");
}
if(10 || i=size){
throw new Exception("参数错误");
}
index(i-1);
Object obj = current.next.getElement();
current.setNext(current.next.next);
java连接数据库的代码package mysql;
import java.sql.*;
/**
* @author xys
*/
public class ConnectMysql {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
String url = "jdbc:mysql://localhost:3306/databaseName";
String user = "mysqluser";
String password = "password";
String driverClass = "com.mysql.cj.jdbc.Driver";
Connection connection = null;
Class.forName(driverClass);
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
if (connection != null) {
System.out.println("数据库连接成功");
} else {
System.out.println("数据库连接失败");
connection.close();
}
return connection;
}
public void getResult() throws ClassNotFoundException, SQLException {
// 实例化 Statement 对象
Statement statement = getConnection().createStatement();
// 要执行java链式代码的 Mysql 数据库操作语句(增、删、改、查)
String sql = "";
// 展开结果集数据库
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 通过字段检索
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// 输出数据
System.out.println("ID : "id);
System.out.println("name :"name);
}
// 完成后需要依次关闭
resultSet.close();
statement.close();
getConnection().close();
}
}
求一份java拦截器的代码 。Struts2使用拦截器,Servlet使用filter,Spring使用AOP...你所说的链式的拦截器什么意思?业务需求是怎样的?你意思是struts2中使用多个拦截器吗?
JAVA EE里什么是链式调用?可否举个例子?链式调用就是每次调用完了过后返回的是自己,比如Hibernate里面执行hql需要设置参数时,每次设置完参数可以继续使用点设置下一个参数
Java:这段代码是如何删除List中第20到第30个元素的呢你的理解是正确的
list是链式的,remove传入的是索引位置
当当前索引对应位置执行删除后,当前索引后面的所有元素统一(前移)[前移这个说法不太标准,是移动还是进行了其他操作,跟list的具体实现相关,ArrayList是执行了前移],这样当前索引后面的所有元素的索引都会减少1,
因此每次remove(20),第一次移除的是索引为20的 , 第二次移除的是索引为21(之前为21,移除一次后,索引为21的索引修改为20)的 , 依次类推
问题本身描述有一个问题【第20到第30个元素】这个说法存在理解问题,因为索引从0开始,第20个元素的索引应该是19,也就是应该将【list.remove(20);】修改为【list.remove(19);】
希望我的回答对你有用
【java链式代码 java 链式写法】关于java链式代码和java 链式写法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 迷你世界怎么骑牛手机版,迷你世界怎么骑着牛耕地
- d200是什么cpu,D200是什么寄存器
- 怎么取消电视伴侣,电视伴侣怎么打开电视
- 下载奇葩战斗家,下载奇葩战斗家下载奇葩战
- linux命令高手 linux命令总结
- 圈悦下载,悦圈跑app
- 包含postgresql与其它数据库比较的词条
- 如何选取跨境电商平台公司,跨境电商公司如何选择
- linux命令行文档工具 linux常用命令文档