Java核心---集合类
2015-11-10 16:01
465 查看
集合类
![](http://img.blog.csdn.net/20151110163109450)
java.util包中提供了一些集合类,与数组类似,集合也被称为容器。它们的不同点是数组的长度是固定的,集合的长度是可变的,数组用来存放基本类型的数据,集合用来存放对象的引用。常用的集合有List,Map,Set,继承关系图如上。
1.Collection接口
Collection接口是层次结构中的根接口。Collection接口通常不能直接使用,不过它提供了增删改查数据的方法。由于List和Set接口都竭诚了Collection接口,所以它们也可以使用父类的方法。
常用的方法有:
add(E e) 添加对象
remove(Object o) 移除对象
isEmpty() 返回Boolean值,判断集合是否为空
iterator() 返回在此Collection的元素上进行迭代的迭代器,用于遍历
size() 返回值的类型是int,获取集合中元素的个数
示例:
a
b
c
2.List集合
List集合包括List接口以及List接口的所有实现类。List集合中的元素是有序的,允许重复,因为该集合体系有索引。
因为List接口继承了Collection,所以父类有的它都有了。除此之外,还有几个非常重要的方法:
1 get(int index): 获得指定索引位置的元素
2 set(int index,Object obj): 将集合中指定索引位置的对象修改为指定的对象
List接口的实现类: 常用的有ArrayList和LinkedList
ArrayList类实现了可变的数组,它底层的数据结构也是数组。可以通过索引位置对集合进行快速的随机访问,缺点就是插入对象和删除对象的速度较慢。
LinkedList类采用的是链表结构,优点是插入和删除对象的速度快,但是随机访问集合元素的效率低,与ArrayList刚好相反。
示例:
3.Set集合
Set集合中的对象不按特定的方式排序,只是简单的存储。不过Set集合中不能包含重复的对象。和List同理,Set接口继承了Collection接口的所有方法。
Set接口常用的实现类有HashSet类与TreeSet类:
HashSet类实现Set接口,是由哈希表支持。它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用null。
TreeSet类实现了Set接口,也实现了java.util.SortedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序。
TreeSet类增加的方法:
first() 返回Set中当前第一个元素
last() 返回Set中当前最后一个元素
comparator() 返回Set中进行排序的比较器,如果用的是自然顺序,就返回null
headSet(E toElement) 返回一个新的Set集合,新集合包含toElenment之前的所有对象
subSet(E fromElement,E fromElement) 返回一个新的Set集合,包含fromElement对象与fromElement对象之间的所有对象
注意: 返回的新的集合之类的,都是包含头,不包含尾的
对字符串进行长度的排序
运行结果为:
![](http://img.blog.csdn.net/20151110190856882)
4.Map集合
Map集合没有继承Collection接口,它提供的是key到value的映射。Map中不能包含相同的key,每个key只能映射一个value。
Map接口提供了将key映射到值的对象。除了常用的集合方法之外,还有另外的一些方法:
put(K key,V value) 向集合中添加指定的key和value的映射关系
containsKey(Object key) 如果此映射包含指定key的映射关系,则返回true
containValue(Obejet value) 如果此映射将一个或多个key映射到指定值,则返回true
get(Object key) 如果存在指定的key对象,则返回该对象对应的值,否则返回null
keySet() 返回该集合中的所有key对象形成的Set集合
values() 返回该集合中所有值对象形成的Collection集合
示例:
输出结果:
java.util包中提供了一些集合类,与数组类似,集合也被称为容器。它们的不同点是数组的长度是固定的,集合的长度是可变的,数组用来存放基本类型的数据,集合用来存放对象的引用。常用的集合有List,Map,Set,继承关系图如上。
1.Collection接口
Collection接口是层次结构中的根接口。Collection接口通常不能直接使用,不过它提供了增删改查数据的方法。由于List和Set接口都竭诚了Collection接口,所以它们也可以使用父类的方法。
常用的方法有:
add(E e) 添加对象
remove(Object o) 移除对象
isEmpty() 返回Boolean值,判断集合是否为空
iterator() 返回在此Collection的元素上进行迭代的迭代器,用于遍历
size() 返回值的类型是int,获取集合中元素的个数
示例:
import java.util.*; class CollectionDemo { public static void main(String[] args) { Collection<String> list = new ArrayList<String>(); //实例化集合类对象 list.add("a"); //添加集合元素 list.add("b"); list.add("c"); Iterator<String>it = list.iterator(); //创建迭代器 while(it.hasNext()) //判断下一个元素是否为空 { String str = (String)it.next(); //获取集合中的元素 System.out.println(str); } } }结果为
a
b
c
2.List集合
List集合包括List接口以及List接口的所有实现类。List集合中的元素是有序的,允许重复,因为该集合体系有索引。
因为List接口继承了Collection,所以父类有的它都有了。除此之外,还有几个非常重要的方法:
1 get(int index): 获得指定索引位置的元素
2 set(int index,Object obj): 将集合中指定索引位置的对象修改为指定的对象
List接口的实现类: 常用的有ArrayList和LinkedList
ArrayList类实现了可变的数组,它底层的数据结构也是数组。可以通过索引位置对集合进行快速的随机访问,缺点就是插入对象和删除对象的速度较慢。
LinkedList类采用的是链表结构,优点是插入和删除对象的速度快,但是随机访问集合元素的效率低,与ArrayList刚好相反。
示例:
import java.util.*; class ListDemo { public static void main(String[] args) { List<String>list = new ArrayList<String>(); //创建集合对象 list.add("a"); list.add("b"); list.add("c"); list.add("d"); int i = (int)(Math.random()*(list.size()-1)); //获取0-3之间的随机数 System.out.println("随机获取数组中的元素:"+list.get(i)); list.remove(2); //将指定索引位置的元素从集合中移除 System.out.println("将索引是‘2’的元素从数组移动后,数组中的元素是:"); for(int j=0;j<list.size();j++){ //循环遍历集合 System.out.println(list.get(j)); } } }
3.Set集合
Set集合中的对象不按特定的方式排序,只是简单的存储。不过Set集合中不能包含重复的对象。和List同理,Set接口继承了Collection接口的所有方法。
Set接口常用的实现类有HashSet类与TreeSet类:
HashSet类实现Set接口,是由哈希表支持。它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用null。
TreeSet类实现了Set接口,也实现了java.util.SortedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序。
TreeSet类增加的方法:
first() 返回Set中当前第一个元素
last() 返回Set中当前最后一个元素
comparator() 返回Set中进行排序的比较器,如果用的是自然顺序,就返回null
headSet(E toElement) 返回一个新的Set集合,新集合包含toElenment之前的所有对象
subSet(E fromElement,E fromElement) 返回一个新的Set集合,包含fromElement对象与fromElement对象之间的所有对象
注意: 返回的新的集合之类的,都是包含头,不包含尾的
对字符串进行长度的排序
import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; public class TreeSetTest{ public static void main(String[] args){ TreeSet ts = new TreeSet(new ComparatorByLen()); //调用新的比较方法 ts.add( "aaaa"); //向集合中添加元素 ts.add( "zz"); ts.add( "nbag"); ts.add( "cba"); ts.add( "abc"); Iterator it = ts.iterator(); //迭代器创建 while(it.hasNext()){ //循环判断下一个元素是否为空 System.out.println(it.next()); } } } class ComparatorByLen implements Comparator{ public int compare(Object o1,Object o2){ String s1 = (String)o1; String s2 = (String)o2; int temp = s1.length() - s2.length(); return temp == 0?s1.compareTo(s2):temp; //用三目运算符返回长的字符串 } }
运行结果为:
4.Map集合
Map集合没有继承Collection接口,它提供的是key到value的映射。Map中不能包含相同的key,每个key只能映射一个value。
Map接口提供了将key映射到值的对象。除了常用的集合方法之外,还有另外的一些方法:
put(K key,V value) 向集合中添加指定的key和value的映射关系
containsKey(Object key) 如果此映射包含指定key的映射关系,则返回true
containValue(Obejet value) 如果此映射将一个或多个key映射到指定值,则返回true
get(Object key) 如果存在指定的key对象,则返回该对象对应的值,否则返回null
keySet() 返回该集合中的所有key对象形成的Set集合
values() 返回该集合中所有值对象形成的Collection集合
示例:
import java.util.*; class MapDemo11 { public static void main(String[] args) { Map<String,String>map = new HashMap<String,String>(); //创建Map实例 map.put("01","李同学"); //向集合中添加对象 map.put("02","张同学"); map.put("03","王同学"); map.put("04","赵同学"); Set<String> set = map.keySet(); //构建Map集合中所有key对象的集合 Iterator <String> it = set.iterator(); //创建集合迭代器 System.out.println("key集合中的元素:"); while(it.hasNext()) //遍历集合 { System.out.println(it.next()); } Collection<String>coll = map.values(); //构建Map集合中所有values值集合 it = coll.iterator(); System.out.println("values集合中的元素:"); while(it.hasNext()) //遍历集合 { System.out.println(it.next()); } } }
输出结果:
相关文章推荐
- Play2 自定义模板类型 (Java&Scala)
- Java流的深入理解
- Java String的常用方法
- Java static 静态方法 并发(是否线程安全)
- Struts2+Spring3+Hibernate——整合byMaven
- MyEclipse生成的Hibernate一对一配置问题
- 在Android Eclipse 开发如何 使用 (*.aar)文件
- WebService 在javaEE中的应用
- 坑爹的Spring数据源——自动提交事务
- poj1001 Exponentiation(JAVA实现)
- 一致性哈希及java实现
- Java内存模型
- Spring(二)——IoC
- spring 声明式事务、异步调用、AOP灯增强类功能 失效问题
- 网上商城项目实战之需求分析
- java jni编译
- Java多线程 学习笔记(一)
- ubuntu下jdk/maven环境安装
- Java遍历JSON
- Spring(一)——总体介绍