Java核心---集合类
来源:互联网 发布:淘宝上匡威正品店 编辑:程序博客网 时间:2024/06/05 04:11
集合类
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));}}}
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());}}}
输出结果:
0 0
- Java核心---集合类
- java核心编程之集合类
- Java三大核心集合类详解
- java 核心集合框架
- java集合的核心知识
- java集合的核心知识
- Java集合框架中的核心接口、集合及映射实现类表
- Java核心基础详解【代码块、集合】
- Java核心基础(3) 集合相关
- JAVA核心基础之集合总结
- 1.Java核心API--集合
- 实验楼 java核心API java集合框架
- Qt核心编程___集合类
- Java核心编程六:集合与泛型算法
- java核心之集合框架——关系图
- java核心之集合框架——HashMap源码分析
- java核心之集合框架——ArrayList源码分析
- Java并发编程核心方法与框架-集合框架结构简要
- 像宜家《家居指南》那样做邮件营销
- C语言学习之路——switch case
- 浅谈Javascript事件委托(代理)
- New package not yet registered with the system.
- python - 类 class
- Java核心---集合类
- Lua UnPack函数用法
- 寻找两个升序数组里的共同值
- UILabel属性, AttributedString字符串属性 (从网络搜集整理)
- LeetCodeOJ_231_Power of Two
- 黑马程序员——基础知识——正则及常见类
- 常用iOS、Mac框架和库及常用中文开发博客
- edditText正则限制特殊符号输入
- 鸟哥的Linux私房菜.基础学习篇(第三版)——互动出版网