Java容器学习——List

Java容器学习——List

基础知识

数组:

​ 优点:随机存取,可以快速访问元素

​ 缺点:静态分配内存,存在空间闲置或者溢出现象;不适合进行插入和删除操作,需要移动大量元素。

链表:

​ 优点:动态分配内存,不浪费同时也够用;对于大量元素的插入、删除操作链表优势十分明显。

​ 缺点:不能随机访问元素,得从头到尾遍历。

学科联系

​ 联想c语言数据结构线性表:顺序表采用的一组地址连续的存储单元依次存储元素,可以看成一个静态的数组;而链表是用一组任意存储单元存储数据元素(这组单元可连续也可不连续),动态分配内存空间。

​ Java中的列表它们是动态分配内存的,与c语言中的顺序表不同的是ArryList是动态分配内存的,大小会随着元素的增多而变大。LinkedList对应链表

ArrayList和LinkedList区别

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  2. 对于随机访问元素,ArrayList优于LinkedList。
  3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

注:两者虽有区别,但都能实现一样的功能,在实际开发中,ArrayList用的比较多。

对List的常用操作

  1. add() 添加元素
  2. remove() 删除元素
  3. size() 列表的大小(列表中装有多少个元素)
  4. get(i) 从列表中获取某个元素,列表的下标也是从0开始
  5. contains()判断容器是否含有XXX东西

注:List在 java包中

​ 更多操作请查看API文档

【参考代码】

package Collection;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class TestList {
    public static void main(String[] args) {
        List list = new ArrayList();
        // 换成Linkedist 下面的操作都能一样实现

        list.add("小明");
        list.add("小红");
        list.add("小蓝");
        list.add("小绿");
        list.add("小明");
        System.out.println(list);//[小明, 小红, 小蓝, 小绿, 小明]

        list.remove("小蓝");
        System.out.println(list);// [小明, 小红, 小绿, 小明]

        // 用Object类来接(默认)
        Object obj = list.get(1);
        String s = (String) obj; //由于原来的数据是String类,使用使要把Object类向下转型(强转)为String类
        System.out.println(s);// 小红

        System.out.println(list.size());// 计算列表的大小(长度):4
        System.out.println(list.contains("小蓝"));//判断列表中是否有xxx false
        
        // 遍历列表
        for (int i = 0; i < list.size(); i++) {
            String str = (String)list.get(i);  //从列表里边拿数据,向下转型,强转
            System.out.println(str);
//            System.out.println(list.get(i));
        }
        
    }
}

注:

​ 列表或者容器为了它的通用性(为了把所有东西能装它里面),任何东西扔到里面是都会被向上转型为Object类:在Java中Object类是所有类的的根,Object是Java中统一的一种数据类型,所有的类都能继承它。

​ 放进去的是Object类,自然我拿出出来时也是Object类,但当初的数据类型不一定是Object类,我们想使用的是它原来的类型

我们喜欢的是那个本质的它!因此想从列表里拿数据,那就要转为原来的数据类型——向下转型,强制转化!

总结

​ 相比与大一下学期的c语言数据结构,Java中列表操作更加的灵活便捷,具体的添加、删除、获取元素等等操作都有具体的方法来实现了,而且ArrayList还是动态分配内存的,简直太强了!

​ 以上是我对刚刚学到的Java容器中List知识的一些个人总结与感悟,最后,感谢各位大佬们看到了这里!愿你韶华不负,青春无悔!

注: 由于自己刚刚开始学习Java不久,语言文字描述、技术等各方面还不是很好,如果文章有任何错误和建议,请各位大佬尽情评论留言!如果这篇文章对你有些许帮助,希望可爱亲切的您点个赞推荐一手,非常感谢啦!

posted @ 2021-08-13 22:11  时间最考验人  阅读(173)  评论(0编辑  收藏  举报