java 中的集合类

来源:互联网 发布:c语言贪吃蛇代码及解析 编辑:程序博客网 时间:2024/04/27 21:19

集合类与数据容器、

Java拥挤和来容纳不同种类的数据,这种容器是建立在位置基础上的。用来存放对象,长度可变。

数组存储对象,长度不可变。

分类

Java的集合类可以分为三种:集,列表和映射。

集(set):在set集合中不区分元素的顺序,因此也就不记录元素的加入顺序。

Set集合中不包含重复元素,即任意的两个元素e1e2都有e1.equals(e2)=false,并且最多有一个null元素。

列表(List
List列表区分元素的顺序,即List列表能够精确的控制每个元素插入的位置,用户能够使用索引(元素在List中的位置)来访问List中的元素。和Set集合的不同,List允许包含重复元素。

映射:保存的是-对信息,即Map中存储的每个元素都包括起标识作用的和该元素的两部分,查找数据时不需提供相应的,才能查找到该所映射的。因此,Map集合中不能包含重复的,并且每个最多只能映射一个值。

需注意:

Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection子接口

Collection接口有多个子接口,其中最重要的两个java.util.Setjava.util.List分别描述集Set和列表List

          java.util.List接口描述的是列表结构,允许程序员对列表元素的插入位置进行精确控制,并增加了根据元素索引来访问元素、搜索元素等功能。在继承父接口Collection的基础之上,List接口新增的相应方法:

void add(int index, E element)     boolean add(E e)

E remove(int index)     boolean remove(Object o)

E get(int index)

int size()

int indexOf(Object obj)

List<E> subList(int fromIndex, inttoIndex)

void clear()

     Java.util.List接口的实现类有多个,分别体现了列表的不同分化形式。

ArrayList

Vector

Stack

LinkedList

先进后出的Stack

StackVector类的子类特点:后进先出Last In First Out)类型的容器,即最后一个被压(push进堆栈中的对象,会被第一个弹(pop出来。

µ  构造方法

ü Stack():用于创建支持后进先出访问方式的对象
例:Stack st=new Stack();
       Stack <String> st = newStack();

其他方法

E peek() 返回栈顶元素,但没有弹出栈顶元素

E pop() 弹出栈顶元素,并返回其中的对象。

E push(E item) 向堆栈顶端压入item对象,同时将item对象返回。

boolean empty() 判断堆栈是否为空,如果该堆栈为空,返回true,反之返回false

10.4 Stack类的综合应用。

Stack st = new Stack();  //Stack <String> st = new Stack();

st.push("First Element");

st.push("second Element");

st.push("third Element");

while(st.empty() != true){

     System.out.println(st.pop().toString());

}

注意:由于Stack继承了Vector类,所以以下语句从语法上来讲,不会有问题。但却破坏了堆栈后进先出的特性,所以,不推荐使用。

st.addElement("bad usage1");

st.addElement("bad usage2");

st.addElement("bad usage3");

for(int i=0;i<st.size();i++){

     System.out.println(st.elementAt(i));

}

实现了Set接口的类HashSet

基于散列表的检测重复元素的策略:HashSet里的元素值同这个元素在Set里所存放的索引位置有个对应关系(散列函数),在HashSet里插入元素前,可根据这个元素值和对应关系,计算出这个元素在HashSet里的插入位置,如果在这个位置里(或位置周围)已经存在了待插入元素的值,则不能插入。 

构造方法

HashSet()

HashSet(<E> c)

其他方法

boolean contains(Object o) 判断是否存在指定元素

10.6 HashSet类的综合应用。

Set<String> set = newHashSet<String>();      

set.add("One");         set.add("One");

System.out.println(set.size());     //输出元素个数为:1     

set.add(Two);   System.out.println(set.size());   //元素个数:2       

System.out.println(set.contains(“One”));     //true,包含元素“One”

 

 

 

 

原创粉丝点击