IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> java高级特性——List接口及实现类 -> 正文阅读

[系统运维]java高级特性——List接口及实现类

一.集合的概念

1.1集合与数组的区别

(1)长度区别:集合长度可变,数组长度不可变

(2)内容区别:集合可存储不同类型元素,数组存储只可单一类型元素

(3)元素区别:集合只能存储引用类型元素,数组可存储引用类型元素,也可存储基本类型元素

1.2集合的概念

集合类存放于java.util包中。?
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。?
集合类型主要有3种:set(集)、list(列表)和map(映射)。

通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。?

?Java集合类主要由Map接口和Collection接口派生而来,,其中Collection由两个常用的子接口即List接口和set接口,所以常说集合框架由3大类接口构成(Map接口,List接口,set接口)。

二.Collection接口

Collection接口是单列集合的最顶层接口,是最基本的集合接口,可以存储一组不唯一无序的的对象,定义了一些通用的方法。

add(E e)添加元素; ?clear()清空元素; ?remove(E e)移除元素; ?size()元素数量;

toArray()集合转数组; ?contains(E e)判断元素是否存在; ?isEmpty()判断集合是否为空;

三.List接口
?

list接口常用的实现类——ArrayList和LinkedList

3.1使用ArrayList类动态存储数据

数据结构:数组但不等同于数组,集合中可以添加任何类型的数据,并且添加的数据都将转换成object类型。

特点:查询快,增删慢,主要用于查询遍历数据,为最常用集合之一;

底层分析:数组结构是有序的元素序列,在内存中开辟一段连续的空间,在空间中存放元素,每个空间都有编号,通过编号可以快速找到相应元素,因此查询快;数组初始化时长度是固定的,要想增删元素,必须创建一个新数组,把源数组的元素复制进来,随后源数组销毁,耗时长,因此增删慢。

举例说明Arraylist类的一些常用方法:

public class TestArraylist {
    public static void main(String[] args) {
        ArrayList list=new ArrayList(20);

        list.add(123);//在列表的末尾添加元素o,起始索引位置从0开始
        list.add("adc");
        list.add(12.54);
        list.add(1,"我是伞兵");//在指定的索引位置添加元素o
        list.remove(0);//从例表中删除hiding索引位置的元素

       list.add(10,"88");//越界报错,索引超出给出的数据范围
//        System.out.println(list);
        System.out.println(list.get(1));//返回指定索引位置处的元素,取出的元素是Object类型,
                                          // 使用前需进行强制类型转换
      list.set(2,"这个下标位置的数改变了");//将指定索引位置的元素替换为obj元素
//        System.out.println(list);
        System.out.println(list.contains("我是伞"));//判断例表中是否存在指定元素o
       System.out.println(list.indexOf("adc"));//找例表中某个元素的下标


        //普通for遍历
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(list.get(i));
//        }
//
//        增强for遍历
//           for(Object o:list){
//            System.out.println(o);
//        }
        //迭代器遍历
        Iterator itr=list.iterator();
        while(itr.hasNext()){
//            Object next=itr.next();
            System.out.println(itr.next());
        }

    }
}

3.2使用LinkedList类动态存储数据

数据结构:双向链表;

特点:查询慢,增删快;

底层分析:链表分为单向和双向,就是一条链子和两条链子的区别;多出的那条链子记录了元素的顺序,因此单向链表结构无序,双向链表结构有序;链表结构没有索引,因此查询慢;链表的增删只需在原有的基础上连上链子或切断链子,因此增删快。

包含ArrayList类所包含的方法,还提供了一些方法可以在Linked List类的首部或尾部进行插入、删除操作。

public class TestLinkedList {
    public static void main(String[] args) {
        LinkedList list =new LinkedList();

        list.add(12330);
        list.add("帅哥");
        list.add(52.2);
        list.add(12);
        list.add(0,"我是伞兵");
        list.addFirst("你好");
        list.addLast("天平");
        System.out.println(list);
        list.remove();
        list.poll();
        list.pop();
        list.peek();
        System.out.println(list.getFirst());
        System.out.println(list.getLast());
    }
}

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:49:03  更:2021-11-10 12:50:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:02:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码