在D语言中,List对应的数据结构是Array,Array可以存储有序且可重复的元素。下面分别介绍ArrayList、Vector和LinkedList的用法:

  1. ArrayList

ArrayList是基于数组实现的,可以存储有序且可重复的元素。以下是ArrayList的典型用法:

import std.container;

void main()
{
    ArrayList!int list = new ArrayList!int();
    
    // 添加元素
    list.insertBack(1);
    list.insertBack(2);
    list.insertBack(3);
    
    // 查询元素
    assert(list[0] == 1);
    assert(list[1] == 2);
    assert(list[2] == 3);
    
    // 修改元素
    list[1] = 4;
    assert(list[1] == 4);
    
    // 删除元素
    list.remove(2);
    assert(list.length == 2);
}
  1. Vector

Vector也是基于数组实现的,可以存储有序且可重复的元素。与ArrayList不同的是,Vector是线程安全的。以下是Vector的典型用法:

import std.container;

void main()
{
    Vector!int vec = new Vector!int();
    
    // 添加元素
    vec.insertBack(1);
    vec.insertBack(2);
    vec.insertBack(3);
    
    // 查询元素
    assert(vec[0] == 1);
    assert(vec[1] == 2);
    assert(vec[2] == 3);
    
    // 修改元素
    vec[1] = 4;
    assert(vec[1] == 4);
    
    // 删除元素
    vec.remove(2);
    assert(vec.length == 2);
}
  1. LinkedList

LinkedList是基于链表实现的,可以存储有序且可重复的元素。与ArrayList和Vector不同的是,LinkedList的查询操作比较慢,但增删操作比较快。以下是LinkedList的典型用法:

import std.container;

void main()
{
    LinkedList!int list = new LinkedList!int();
    
    // 添加元素
    list.insertBack(1);
    list.insertBack(2);
    list.insertBack(3);
    
    // 查询元素
    auto iter = list.front;
    assert(iter.data == 1);
    iter = iter.next;
    assert(iter.data == 2);
    iter = iter.next;
    assert(iter.data == 3);
    
    // 修改元素
    iter = list.front.next;
    iter.data = 4;
    assert(iter.data == 4);
    
    // 删除元素
    list.remove(iter);
    assert(list.length == 2);
}
``
dlang语言类似java以下 数据结构的对应结构 List有序可重复 ArrayList 底层数据结构是数组查询快增删慢 线程不安全效率高 Vector 底层数据结构是数组查询快增删慢 线程安全效率低

原文地址: http://www.cveoy.top/t/topic/fzub 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录