2 Java学习之 集合框架
来源:互联网 发布:女款羽绒服淘宝网购物 编辑:程序博客网 时间:2024/05/20 10:21
1. 概念
集合就是将若干用途相同、近似的“数据”结合成一个整体。
集合从体系省分为三种:
- 列表(List) : List集合区分元素的顺序,允许包含相同的元素。
- 集 (Set) : Set集合不区分元素的顺序,不允许包含相同的元素。
- 映射(Map) : Map集合保存“键”-“值”对,“键”不能重复,一个“键”只能对应一个值。
Java集合只能保存引用数据类型,也就是保存对象的地址,而非对象本身。
2. 类图关系
Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口
List, Set, Map是否继承自Collection接口? List,Set是 Map不是
3.Connection
Connection接口中的方法:
- int size();
- boolean isEmpty();
- boolean contains(Object o);
- Iterator<E> iterator();
- Object[] toArray();
- boolean add(E e);
- boolean remove(Object o);
- boolean containsAll(Collection<?> c);
- boolean addAll(Collection<? extends E> c);
- boolean removeAll(Collection<?> c);
- boolean retainAll(Collection<?> c);
- void clear();
Connection 方法举例:
Collection c = new ArrayList();c.add("123");c.add(1);c.add(new Float(0.09f));System.out.println(c.size());// 结果 3System.out.println(c); // 结果 [123, 1, 0.09]
3.1 List接口
list接口是Connection的子接口,存放的对象是有顺序的,而且可以重复。
list容器存放的对象都有一个整数型的序号,记录改对象在容器中的位置,可以根据序号来访问容器中的元素。
list接口的实现类是ArrayList、LinkedList。
- E get(int index);
- E set(int index, E element);
- void add(int index ,E element);
- E remove(int index);
- List<E> subList(int fromIndex, int toIndex);
3.1.1 Arraylist
Java.util.Arraylist实现了list接口,用于描述可变类型长度数组列表(底层采用数组实现);
3.1.2 Vector
Java.util.Arraylist实现了list接口,用于描述可变类型长度数组向量(底层采用数组实现);
与ArrayList的区别: Vector是线程安全的(同步),用在多线程环境中,运行效率慢;ArrayList不是线程安全的,用在单线程环境。
3.1.3 Stack
Java.util.Stack继承Vector,对应“First in Last out”的数据结构-栈。
ArrayList和Vector的区别。
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
3.2 Set 接口
Set接口是Collection的子接口,set接口没有提供新的方法,但实现set接口的容器中元素没有顺序,不能重复。
3.2.1 HashSet
HashSet hs = new HashSet(); //可以求交集和并集hs.add("first");hs.add("second");hs.add("third");hs.add("fourth");hs.add("first");hs.add(new Date());System.out.println("哈希表的大小" + hs.size()); //哈希表的大小5System.out.println(hs); //[fourth, Mon Jul 29 11:25:57 CST 2013, second, third, first]
3.2.2 TreeSet
TreeSet描述set的一个变体-可实现排序功能的集合。
将对象插入TreeSet时,会按照某种比较规则将对象插入到一个有序序列中,以保证TreeSet对象序列按照“升序”排列。
4. Map
实现Map接口的类用来存放“键-值”对。可以理解为一张二维表,这个二维表有两列,一列为key,一列为value。 key不能重复。
Map接口中常用的方法:
- int size();
- boolean isEmpty();
- boolean containsKey(Object key);
- boolean containsValue(Object value);
- V get(Object key);
- V put(K key, V value);
- V remove(Object key);
4.1.1 HashMap
Java.util.HashMap实现了Map接口,基于哈希表实现了“键”-"值"对的映射关系。
HashMap不确定"key"-"value"对的先后顺序,允许key、value为null.
4.1.2 HashTable
同hashmap一致。
HashMap和Hashtable的区别
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
5. Collections类
java.util.Collections类提供了一些静态方法,实现了基于List容器的常用算法。
void sort(List list); 对容器内的元素进行升序排列
void reverse(List list); 对容器内的元素进行逆序排列
void shuffle(List); 对List容器内的元素进行随机排序
void fill(List list,Object obj); 用特定的对象填充list
void copy(List des,List src);
void binarySear(List list,Obj obj); 采用半折法查找obj对象
6. Arrays类
java.util.Arrays类提供对数组进行操作的静态方法,实现了对数组的查询、排序等功能。
List asList(Object a[]);
void sort(Object a[]);
String toString(object a[]);
int binarySearch(Object a[],Object key);
- 2 Java学习之 集合框架
- Java学习笔记之集合框架2
- java学习之集合框架
- java学习之集合框架
- java学习之集合框架
- Java学习之集合框架
- java学习之集合框架
- java学习笔记:集合框架之TreeSet
- 黑马程序员--java学习之集合框架
- java学习笔记:集合框架之TreeSet
- Java学习笔记之集合框架1
- Java学习笔记之集合框架3
- java学习之集合框架工具类
- java学习之集合框架总结
- Java 学习之集合框架---List
- Java 学习之集合框架---Set
- Java 学习之集合框架---Map
- java学习笔记之集合框架
- EOE上的LISTVIEW分组
- Linux操作系统主机名(hostname)简介
- 并行作业类型
- eclipse和myeclipse快捷键大全
- 解决sqllite的'unable to open database file'错误
- 2 Java学习之 集合框架
- Android内核剖析读书笔记(1)—Framework概述
- android中Bluetooth属性获取代码分析
- LINUX下如何判断CPU和系统是32位还是64位
- CH2 The Graphics Rendering Pipeline —— Real-time Rendering
- android gradle 配置 build.gradle
- hadoop的ssh无密码登陆
- HTM_前期准备
- Spring3.2 MVC框架页面跳转及返回JSON内容