class List<T>
{
private class Node
{
private T data;
private Node next; private Node(T data)
{
if(data != null)
this.data = data;
} private void add(T data)
{
if(this.next == null)
this.next = new Node(data);
else
this.next.add(data);
} private void remove(Node previous, int index)
{
if(List.this.foot++ == index)
{
previous.next = this.next;
this.next = null;
List.this.count--;
return;
}
else
{
this.next.remove(this,index);
}
} private void remove(Node previous, T data)
{
if(this.data.equals(data))
{
previous.next = this.next;
this.next = null;
List.this.count--;
return;
} if(this.next != null)
this.next.remove(this,data);
else
return ;
} private void replace(int index, T data)
{
if(List.this.foot++ == index)
this.data = data;
else
this.next.replace(index,data);
} private void replace(T oldData, T newData)
{
if(this.data.equals(oldData))
this.data = newData;
else
this.next.replace(oldData,newData);
} private T get(int index)
{
if(List.this.foot++ == index)
return this.data;
else
return this.next.get(index);
} private boolean contains(T data)
{
if(this.data.equals(data))
return true;
if(this.next != null)
return this.next.contains(data);
else
return false;
}
} //===============================================
private Node root;
private int count;
private int foot; public List()
{} public boolean isEmpty()
{
if(this.count == && this.root == null)
return true;
else
return false;
} public int size()
{
return this.count;
} public void add(T data)
{
if(this.isEmpty())
this.root = new Node(data);
else
this.root.add(data); this.count++;
} public void remove(int index)
{
if(this.isEmpty())
return; if(index < || this.count <= index)
return; if(index == )
{
Node temp = this.root;
this.root = this.root.next;
temp.next = null;
this.count--;
return;
}
else
{
this.foot = ;
this.root.remove(this.root, index);
}
} public void remove(T data)
{
if(this.isEmpty())
return ; if(this.root.data.equals(data))
{
Node temp = this.root;
this.root = this.root.next;
temp.next = null;
this.count--;
return;
}
else
{
this.root.next.remove(this.root, data);
}
} public void replace(int index, T data)
{
if(this.isEmpty())
return; if(index < || this.count<=index)
return; this.foot = ;
this.root.replace(index,data);
} public void replace(T oldData, T newData)
{
if(this.isEmpty())
return; this.root.replace(oldData,newData);
} public T get(int index)
{
if(this.isEmpty())
return null; this.foot = ;
return this.root.get(index);
} public boolean contains(T data)
{
if(this.isEmpty())
return false; return this.root.contains(data);
} public Object[] toArray()
{
if(this.isEmpty())
return null; int count = this.count;
Object[] retVal = new Object[count];
for(int i = ; i < count; i++)
{
retVal[i] = this.get(i);
}
return retVal;
}
} public class Hello
{
public static void main(String[] args) throws Exception
{
List<String> myList = new List<String>();
myList.add("Hello");
myList.add("world");
myList.add("Ni");
myList.add("Hao");
myList.add("HeHe"); System.out.println(myList.contains(null)); Object[] result = myList.toArray(); for(Object item : result)
{
String temp = (String)item;
System.out.println(temp);
}
}
}

Java实现单向链表的增删改查的更多相关文章

  1. 关于单链表的增删改查方法的递归实现(JAVA语言实现)

    因为在学习数据结构,准备把java的集合框架底层源码,好好的过一遍,所以先按照自己的想法把单链表的类给写出来了; 写该类的目的: 1.练习递归 2.为深入理解java集合框架底层源码打好基础 学习的视 ...

  2. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  3. 使用java对sql server进行增删改查

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  4. Java API实现Hadoop文件系统增删改查

    Java API实现Hadoop文件系统增删改查 Hadoop文件系统可以通过shell命令hadoop fs -xx进行操作,同时也提供了Java编程接口 maven配置 <project x ...

  5. Java描述数据结构之链表的增删改查

    链表是一种常见的基础数据结构,它是一种线性表,但在内存中它并不是顺序存储的,它是以链式进行存储的,每一个节点里存放的是下一个节点的"指针".在Java中的数据分为引用数据类型和基础 ...

  6. java实现单链表的增删改以及排序

    使用java代码模拟单链表的增删改以及排序功能 代码如下: package com.seizedays.linked_list; public class SingleLinkedListDemo { ...

  7. Java项目——模拟电话薄联系人增删改查

    该项目模拟了电话本记录联系人的业务功能,用来练习对数据库的增删改查等操作. 菜单类:Menu -- 用来封装主菜单和个选项的子菜单 Person类: Person--联系人的实体类 TelNoteRe ...

  8. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...

  9. 【ES】ElasticSearch初体验之使用Java进行最基本的增删改查~

    好久没写博文了, 最近项目中使用到了ElaticSearch相关的一些内容, 刚好自己也来做个总结. 现在自己也只能算得上入门, 总结下自己在工作中使用Java操作ES的一些小经验吧. 本文总共分为三 ...

随机推荐

  1. FineReader Mac如何设置参数让导出为DOCX/RTF/ODT格式

    Mac版ABBYY FineReader OCR文字识别软件识别文档之后,可以将已识别的文本保存到文件中,还可以通过电子邮件发送输出格式受FineReader支持的已识别文本,了解了ABBYY Fin ...

  2. linux 通用IO

    open(),read(),write(),close()可以应用于管道,FIFO,socket,或者终端等所有文件类型执行IO操作. lseek()并不适用于所有类型的文件.不允许将lseek()应 ...

  3. You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法

    报错如下:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test2/com.exampl ...

  4. String 深浅拷贝的测试---有待继续测试

    public class TestString { void test1() { // TODO Auto-generated method stub String str = new String( ...

  5. oracle自动备份

    因为一个项目上马,需要设置自动备份,网上搜索了一下,windows平台下基本上是通过系统的任务计划完成的,于是我也写了一下,无非就是exp xxxx.dmp,文件名是用的日期加时间,精确到秒,一小时备 ...

  6. Andaroid L新特性

    1.Material Design”(材料设计)的全新设计理念,和Holo相比,Material Design更加色彩丰富,不像Holo那样灰暗 2.1)卡片风格(锁屏界面) 2)环动式设计  And ...

  7. WAMP Server助你在Windows上快速搭建PHP集成环境

    WAMP Server助你在Windows上快速搭建PHP集成环境 原文地址 我想只要爬过几天网的同学都会知道PHP吧,异次元的新版本就是基于PHP的WordPress程序制造出来的,还有国内绝大部分 ...

  8. input绑定datapicker控件后input再绑定blur或者mouseout等问题

    input绑定datapicker控件后input再绑定blur或者mouseout等问题 问题描述:今天在修改一个东西的时候需要给一个input输入域绑定blur事件,从而当它失去焦点后动态修改其中 ...

  9. angularjs webstorm 单元测试 Package.json

    Package.json小结 生成package.json 定位到想放置package.json的目录,运行npm init,根据提示就可以生成package.json文件,其中test comman ...

  10. 剑指offer系列46---和为s的连续正数序列

    [题目]输出所有和为S的连续正数序列.序列为:1,2,3,4,5,6,7,8................ * 序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序 package com.e ...