码迷,mamicode.com
首页 > 其他好文 > 详细

集合框架

时间:2017-10-11 14:13:37      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:rabl   pareto   map   文件   userinfo   循环   数据结构   集合   线程   

集合框架

一.作用

1.用来存储多个数据

2.实现了不同的数据结构

二.集合框架被设计成要满足以下几个目标。

1.该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

2.该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

3.对一个集合的扩展和适应必须是简单的。

三.集合框架包含的内容

1.接口:是代表集合的抽象数据类型。接口允许集合独立操纵其代表的细节。在面向对象的语言,接口通常形成一个层次。

2.实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。

3.算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

四.集合接口

序号

接口描述

1

Collection 接口

Collection 是最基本的集合接口,一个 Collection 代表一组 ObjectJava不提供直接继承自Collection的类,只提供继承于的子接口(Listset)

2

List 接口

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

3

Set

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

4

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

5

Map
将唯一的键映射到值。

6

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

7

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

8

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

 

补充:LIst:

1.List继承了Collection接口,并且扩展出属于自己的方法;

       List 集合中的元素都是与索引有关系的,因此List

       集合扩展的方法都是与索引有关系的。

      2.List 是个接口,有三个实现的类

        ArrayList:数组列表,数据采用数组方式存储。       

LinkedList: 链表

        Vector:jdk1.0中的集合,实现了同步

     Set:

      1.Set接口继承了Collection接口。

Set中所存储的元素是不重复的,但是是无序的

也就是说,Set中的元素是没有索引的

2.Set接口有两个实现类

HashSet:底层是哈希码值,基于HashMap实现的。

        TreeSet:元素不重复,并且元素实现了排序。

 

五.SetList的区别

1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>

3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 

六.List接口的常用实现类

1.ArrayList

   ArrayList被称为数组列表,数据采用数组的方式存储,使用连续内存存储。ArrayListJava语言中可变长度数组的实现。

2.ArrayList的常用方法

add(Object  o);->集合中添加数据

remove(Object o)->删除集合中的数据

add(int  index, Object element)->给集合中某个索引位置添加一个数据

get(int index)->获取集合中某个位置的信息

3.LinkedList

  称为链表,该集合类型实现了链表的数据结构。值得一提的是,LinkedList不仅实现了List接口,还实现了Queue接口,可以说链表同时也可以作为一个队列对象使用。使用方式与ArrayList类似。

4.LinkedList的常用方法

LinkedList是以链表的方式存放的,每个节点上存放的是数据信息

     1常用方法:

add(E element)—向链表末尾添加一个新的节点,该节点中的数据是参数element指定的对象。

          add(int index, E element)—向链表的指定位置添加一个新的节点,该节点中的数据是参数element指定的对象。    

     2扩展的方法:

addFirst(E element)—向链表的头添加新节点,该节点中的数据是参数element指定的对象。

        addLast(E element)—向链表的末尾添加新节点,该节点中的数据是参数element指定的对象。  

5.Vector

   VectorJDK1.0版本中的集合类,后来修改为实现了List接口。Vector的功能几乎都可以被ArrayList替代,主要区别是Vector是同步的,而ArrayList不是同步的。

6.ArrayListLinkedList的遍历

for循环遍历通过索引值获取所对应的数据信息

public class GenericsList {

public static void main(String[] args) {

//创建用户对象

User user=new User("张三");

User user1=new User("李四");

//创建集合对象,存放用户对象

List<User> userList=new ArrayList<User>();                                    

userList.add(user);

userList.add(user1);

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

     System.out.println(userList.get(i));

}

}

}

增强for循环的遍历也是通过迭代器的方法获取信息

public class GenericsList {

  public static void main(String[] args) {

//创建用户对象

User user=new User("张三");

User user1=new User("李四");

//创建集合对象,存放用户对象

List<User> userList=new LinkedList<User>();

userList.add(user);

userList.add(user1);

for(User userInfo:userList){

System.out.println(userInfo);

}

  }

}

七.Map集合的常用实现类

1.HashMap

   HashMap中元素的key值不能重复,即彼此调用equals方法,返回为false。排列顺序是不固定的。

2.HashMap的常用方法

     put<key,value>—>存放对象

     get(key);     —>获取key所对应的数据。

     keySet()      —> 返回此映射中所包含的键的 set 视图。

3.TreeMap

  TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMapkey值所在类必须实现Comparable接口。

4.TreeMap的常用方法与HashMap类似

补充:TreeMap适用于按自然顺序或自定义顺序遍历键(key)TreeMap根据key值排序,key值需要实现Comparable接口,实现compareTo方法。TreeMap根据compareTo的逻辑,对key进行排序。

八.Properties

Properites类是Hashtable类的子类,所以也间接地实现了Map接口。

  在实际应用中,常使用Properties类对属性文件进行处理。

  常用方法load();加载文件;

            getProperty(key);通过key值获得对应的value

            setProperty(String key,String value)properties文件中写值。

九.Collections

1.概念:

是集合类的工具类,与数组的工具类Arrays类似

定义了大量静态方法

1同步集合对象的方法

2List排序的方法

2.Collections方法的介绍

   同步集合的方法

      Set<T> synchronizedSet(Set<T> s) 返回由指定 set 支持的同步(线程安全)的set

      Map<K,V>  synchronizedMap(Map<K,V> m)  返回由指定 map 支持的同步(线程安全)的map

    —List 排序的方法

       sort(List<T> list>  根据元素的自然顺序 对指定列表按升序进行排序。

集合框架

标签:rabl   pareto   map   文件   userinfo   循环   数据结构   集合   线程   

原文地址:http://www.cnblogs.com/ggm0317/p/7650068.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!