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));
         }
     }
}

你可能感兴趣的:(java,java,数据结构,开发语言)