• Java 数据结构、集合框架、ArrayList


    一、Java数据结构

    Java中的数据结构主要包含以下几种接口和类:枚举、位集合、向量、栈、字典、哈希表、属性。

    枚举接口定义一种从数据结构中取回连续元素的方式。

    位集合实现了一组可以单独设置和清除的位或标志。

    向量类于传统数组相似,但向量的大小可以依据需要动态的变化。

    栈实现后进先出的数据结构。

    字典类是一个抽象类,它定义键映射到值的数据结构。字典定义的抽象方法:

    序号

    方法描述

    1

    Enumeration elements( )
    返回此 dictionary 中值的枚举。

    2

    Object get(Object key)
    返回此 dictionary 中该键所映射到的值。

    3

    boolean isEmpty( )
    测试此 dictionary 是否不存在从键到值的映射。

    4

    Enumeration keys( )
    返回此 dictionary 中的键的枚举。

    5

    Object put(Object key, Object value)
    将指定 key 映射到此 dictionary 中指定 value。

    6

    Object remove(Object key)
    从此 dictionary 中移除 key (及其相应的 value)。

    7

    int size( )
    返回此 dictionary 中条目(不同键)的数量。

    哈希表类提供一种在用户定义键结构的基础上来组织数据的手段。哈希表定义的方法:

    序号

    方法描述

    1

    void clear( )
     将此哈希表清空,使其不包含任何键。

    2

    Object clone( )
    创建此哈希表的浅表副本。

    3

    boolean contains(Object value)
     测试此映射表中是否存在与指定值关联的键。

    4

    boolean containsKey(Object key)
    测试指定对象是否为此哈希表中的键。

    5

    boolean containsValue(Object value)
    如果此 Hashtable 将一个或多个键映射到此值,则返回 true。

    6

    Enumeration elements( )
    返回此哈希表中的值的枚举。

    7

    Object get(Object key)
     返回指定键所映射到的值,如果此映射不包含此键的映射,则返回 null. 更确切地讲,如果此映射包含满足 (key.equals(k)) 的从键 k 到值 v 的映射,则此方法返回 v;否则,返回 null。

    8

    boolean isEmpty( )
    测试此哈希表是否没有键映射到值。

    9

    Enumeration keys( )
     返回此哈希表中的键的枚举。

    10

    Object put(Object key, Object value)
    将指定 key 映射到此哈希表中的指定 value。

    11

    void rehash( )
    增加此哈希表的容量并在内部对其进行重组,以便更有效地容纳和访问其元素。

    12

    Object remove(Object key)
    从哈希表中移除该键及其相应的值。

    13

    int size( )
     返回此哈希表中的键的数量。

    14

    String toString( )
    返回此 Hashtable 对象的字符串表示形式,其形式为 ASCII 字符 ", " (逗号加空格)分隔开的、括在括号中的一组条目。

    属性类表示一个持久的属性集。

    二、Java集合框架:

    Java集合框架主要包括两种类型的容器:1、集合(Collection),存储一个元素集合;2、图(map),存储键/值对映射。集合(Collection)接口有3中类型:list、set和queue。

    集合框架定义的接口:

    序号

    接口描述

    1

    Collection 接口

    Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

    Collection 接口存储一组不唯一,无序的对象。

    2

    List 接口

    List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

    List 接口存储一组不唯一,有序(插入顺序)的对象。

    3

    Set

    Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

    Set 接口存储一组唯一,无序的对象。

    4

    SortedSet
    继承于Set保存有序的集合。

    5

    Map

    Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

    6

    Map.Entry
    描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。

    7

    SortedMap
    继承于 Map,使 Key 保持在升序排列。

    8

    Enumeration
    这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

    三、Java ArrayList:

    ArrayList类是可以动态修改的数组,没有固定大小的限制,可以添加、删除元素。

    1、添加元素:

    import java.util.ArrayList;

    public class RunoobTest {
         public static void main(String[] args) {
            ArrayList sites = new ArrayList();
             sites.add("Google");
            sites.add("Taobao");
             sites.add("Weibo");
             System.out.println(sites);
         }
    }

    2、访问元素:

    import java.util.ArrayList;

    public class RunoobTest {
         public static void main(String[] args) {
            ArrayList sites = new ArrayList();
             sites.add("Google");
            sites.add("Taobao");
            sites.add("Weibo");
             System.out.println(sites.get(1));  // 访问第二个元素
         }
    }

    1. 修改元素:

    import java.util.ArrayList;

    public class RunoobTest {
         public static void main(String[] args) {
            ArrayList sites = new ArrayList();
            sites.add("Google")
             sites.add("Taobao");
             sites.add("Weibo");
             sites.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值
             System.out.println(sites);
         }
    }

    3、删除元素:

    import java.util.ArrayList;

    public class RunoobTest {
         public static void main(String[] args) {
            ArrayList sites = new ArrayList();
             sites.add("Google");
            sites.add("Taobao");
             sites.add("Weibo");
             sites.remove(3); // 删除第四个元素
             System.out.println(sites);
         }
    }

    4、计算大小:

    import java.util.ArrayList;

    public class RunoobTest {
         public static void main(String[] args) {
            ArrayList sites = new ArrayList();
            sites.add("Google");
            sites.add("Taobao");
            sites.add("Weibo");
             System.out.println(sites.size());
         }
    }

    5、迭代数组列表:

    import java.util.ArrayList;

    public class RunoobTest {
         public static void main(String[] args) {
            ArrayList sites = new ArrayList();
             sites.add("Google");
            sites.add("Taobao");
            sites.add("Weibo");
             for (int i = 0; i < sites.size(); i++) {
                 System.out.println(sites.get(i));
             }
         }
    }

  • 相关阅读:
    Shell(9)函数
    QianBase MPP之qb_toolkit管理模式
    FTP服务器
    操作系统学习笔记11 | 生磁盘的使用与管理
    接口自动化测试很难吗?来看看这份超详细的教程!
    有关 Rust 交叉编译的一些思路 (仅供参考)
    微信小程序标题栏封装
    小趴菜教你如何用Python开发手机App..
    SQL数据库使用方法
    1314. 矩阵区域和-矩阵前缀和算法
  • 原文地址:https://blog.csdn.net/corlin6688/article/details/134535468