数组集合删除方法:

按下标删方法:

按下标删除则申请一个int参数类型的方法,将下标传递进来,然后先判断需要删除的元素是不是数组的最后一个,是的话就长度减一就可以了,如果是删除其他位置的元素则利用内存拷贝方法将数组后面的元素往前挪,覆盖掉需要删除的那一个元素接着下标再减一来达到删除的效果。

删除后需要判断一下数组是否空余很多位置,是的话就需要进行缩容来避免浪费资源。申请一个比原来的数组小一半的新数组,然后把旧数组里的元素拷贝到新的数组上,再将旧数组的引用改为新的数组。

代码示例:

d544b743fcd0da674c20a3d9ea64329e.png


按对象删除方法:

按对象删除则比较简单了,申请一个Object类型参数的方法,然后使用for循环将数组里的对象一个个拿出来对比是否为传进来的对象,是的话就把这个对象的下标传递给按下标删除方法进行删除。需要查找完整个数组就使用递归的方式再继续查找,直到满足出口条件来结束掉这个方法。

代码示例:

d2a99c097e01fb49c0c538d3a8b7d7ca.png



查询方法:

查询某个对象是否存在数组里,申请一个返回值为boolean类型的方法,参数类型为Object以便接收对象,然后也是使用for循环将数组里的对象一个个拿出来,然后对比是否为查找的那个对象,是的话就返回一个true,整个数组都没有查找到的话就返回一个false

代码示例:

8729610ec6f2d364dd203efeed8c01d6.png




链表集合:

链表集合就像链条一样一环扣一环,前后和中间都可以方便的添加或删除某个数据,因为在链表中插入或删除一个数据不会影响到其他的元素,直接把引用更换一下就可以了,如果是数组集合要删除一个数据则需要拷贝剩余的元素之后往前挪覆盖掉才可以实现这些操作,所以链表集合的的优点就是灵活性相对于其他集合要好得多,缺点则是速度要慢一些

 

链表集合分双链和单链:

双链和单链的区别是:双链每一环数组长度都是3,所以可以记录着上家和下家,是双向的。

 

单链则只有作为链头的数组长度是3,链头的数组长度为3,是因为其中一个存储数据,一个记录下家,一个用来记录链尾,往下之后其余数组的长度都为2,所以只能记录下家不能记录上家,是单向的

双链添加方法:

双链需要申请两个数组属性,一个作为链头另一个作为链尾。然后申请一个参数类型为Object的方法。因为Object可以接收所有对象。接着就是判断是否第一次进行添加,是的话就申请一个长度为3的数组,然后链头链尾的引用为同一个。

第二次以上进行添加我、也是申请一个长度为3的数组,然后把链尾放进去,接着引用新的对象,最后更新链尾。

代码示例:

b257cf6add9858b1d20be6525f4b2df6.png


向前添加方法:

其实就是把添加方法反过来一下就可以了。

代码示例:

59bab85adbc5bcef0d57156c84b6e822.png



向后面添加方法:

实际上默认的添加方法就是往后面添加看,所以只需要在这个方法调用默认的添加方法就可以了。

代码示例:

8cc0c679310c5786418a54f44604a07f.png




双链删除方法:

删除最前面一个方法:

删除只需要断开引用就可以了,垃圾会自动回收。

代码示例:

63393bc9a8e4bd51567b4ff4d74623b2.png



删除最后面一个方法:

把删除最前面一个方法反过来一下就可以了。

代码示例:

c7e56c1fdad4da27c62610ad344a5ee8.png



删除任意个方法:

代码示例:

3b345904cf8588b47a43c5824fdf2273.png



查询方法:

查询方法需要使用两个方法并且通过while循环配合使用。

代码示例:

56cb87a96ab2ea0055a0f80466557f2d.png

908803771c9cc024ed0221816dd046fe.png



运行结果:

b10ae1c5cf0e57b5e9a67a393e65dacc.png