java基础-集合类总结
2017-12-07 22:58
183 查看
由于数组具有固定的长度,用来存放基本类型,java使用类库提供了一套完整的容器类来解决这个问题,基本的类型有:List,Set,Map和Queue,称为集合类。在java.util包中,用来存放对象的引用。
常用的方法:
add(E e):添加指定的对象
remove(Object o):移除
isEmpty():判断是否为空
iterator():迭代器,用于遍历集合的对象
size():元素的个数
特点:可以重复,是有序的,元素的顺序就是插入的顺序
还有两个非常重要的方法:
get(int index):通过索引获取元素
set(int index,Object o):指定索引的对象修改成指定的对象
ArrayList:
实现了基于动态数组的数据结构,允许为null,可以根据索引对集合进行快速查询访问,但是增删效率比较低
LinkedList:
采用的是链表的结构保存对象的数据结构,增删效率较快,查询随机访问的效率较低
TreeSet:实现了Set接口,还实现了java.util.SortedSet接口,因此在遍历的时候按照自然顺序递增排序,也可以按照指定的比较器对集合中对象排序
comparator():返回Set中元素进行排序的比较器,如果按照自然顺序,则返回null
headSet(E toElement):返回一个新的Set集合,包含toElement(不包含)之前的所有元素
**subSet(E fromElement,E toElement):**fromElement(不包含)与toElement(包含)之间的元素
tailSet(E fromElement):返回一个新的Set集合,包含fromElement(包含)之后的所有元素
key具有唯一性,每个可以只能映射一个value,key还决定了存储对象的位置。Map也支持泛型Map
containsKey(Object key):如果包含key,返回true
containsValue(Object Value):如果包含Value,返回true
get(Object key):如果存在Key则返回对应的value,否则返回null
keySet():返回集合中所有key对象形成的Set集合
values():返回集合中所有value对象形成的Collection集合
HashMap
基于希哈表的Map接口的实现,允许使用null键和null值;不保证顺序不变
TreeMap
不仅实现了Map接口,还实现了java.util.SortedMap,因此集合中的元素具有一定的顺序,不允许为null值,增删的时候效率比HashMap的性能差。
可以通过HashMap类来创建一个Map,当需要顺序输出的时候,在创建一个TreeMap实例,实现把元素顺序的输出
一.Collection接口
Collection接口通常不能直接使用,但接口提供了增删以及管理数据库的方法。List和Set是继承了Collection接口,所以方法是通用的。常用的方法:
add(E e):添加指定的对象
remove(Object o):移除
isEmpty():判断是否为空
iterator():迭代器,用于遍历集合的对象
size():元素的个数
Iterator迭代器:
用于遍历集合类Collection <String> list=new ArrayList<>(); list.add("a"); list.add("b"); Iterator <String> it =list.iterater(); while(it.hasNext()){ system.out.printLn((String)it.next()); } //注意:it.next()方法返回的是Object()对象,要进行类型转换
1.List接口
List接口继承了Collection接口,包含了其所有方法可以通过索引(从0)来访问集合的元素特点:可以重复,是有序的,元素的顺序就是插入的顺序
还有两个非常重要的方法:
get(int index):通过索引获取元素
set(int index,Object o):指定索引的对象修改成指定的对象
实现类有ArrayList和LinkedList:
List<E>list=new ArrayList<>(); Lsit<E>list2=new LinkedList<>(); //E表示泛型,可以是合法的java的数据类型。增加集合类的安全性 //除了Iterator 可以根据索引来遍历" for(int i;i<list.size();i++){ system.out.print(list.get(i)); }
ArrayList:
实现了基于动态数组的数据结构,允许为null,可以根据索引对集合进行快速查询访问,但是增删效率比较低
LinkedList:
采用的是链表的结构保存对象的数据结构,增删效率较快,查询随机访问的效率较低
2.Set接口
Set接口继承了Collection接口,不按照特定的顺序排列,只是简单的把对象加入。但是不能包含重复的对象;set也包含了conllection接口的所有方法。两种实现类:HashSet TreeSet
HashSet:实现了Set接口,由哈希表支持(实际上是一个HashMap的实例)。不保证Set的迭代顺序不变,允许为Null元素TreeSet:实现了Set接口,还实现了java.util.SortedSet接口,因此在遍历的时候按照自然顺序递增排序,也可以按照指定的比较器对集合中对象排序
TreeSet增加的方法:
first()/last():返回第一个/最后一个元素comparator():返回Set中元素进行排序的比较器,如果按照自然顺序,则返回null
headSet(E toElement):返回一个新的Set集合,包含toElement(不包含)之前的所有元素
**subSet(E fromElement,E toElement):**fromElement(不包含)与toElement(包含)之间的元素
tailSet(E fromElement):返回一个新的Set集合,包含fromElement(包含)之后的所有元素
二.Map集合
Map接口没有继承Collection接口,提供的是key到value的映射,键值对。允许value是null,没有个数限制。key具有唯一性,每个可以只能映射一个value,key还决定了存储对象的位置。Map也支持泛型Map
1.常用的方法:
put(K key,V value):添加containsKey(Object key):如果包含key,返回true
containsValue(Object Value):如果包含Value,返回true
get(Object key):如果存在Key则返回对应的value,否则返回null
keySet():返回集合中所有key对象形成的Set集合
values():返回集合中所有value对象形成的Collection集合
2.Map接口的实现类有:HashMap TreeMap
一般建议使用HashMap类来实现Map集合,因为HashMap类实现的Map集合增删的效率更高。HashMap是基于哈希表的Map接口的实现。通过哈希码对内部的映射关系进行快速的查找,若希望Map集合中的对象也存在一定的吮吸,则使用TreeMap来实现Map类。HashMap
基于希哈表的Map接口的实现,允许使用null键和null值;不保证顺序不变
TreeMap
不仅实现了Map接口,还实现了java.util.SortedMap,因此集合中的元素具有一定的顺序,不允许为null值,增删的时候效率比HashMap的性能差。
可以通过HashMap类来创建一个Map,当需要顺序输出的时候,在创建一个TreeMap实例,实现把元素顺序的输出
3.Map的遍历方法:
import java.util.*; public class Test{ public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 System.out.println("通过Map.keySet遍历key和value:"); for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); } //第二种 System.out.println("通过Map.entrySet使用iterator遍历key和value:"); Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第三种:推荐,尤其是容量大时 System.out.println("通过Map.entrySet遍历key和value"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第四种 System.out.println("通过Map.values()遍历所有的value,但不能遍历key"); for (String v : map.values()) { System.out.println("value= " + v); } } }
相关文章推荐
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- 黑马程序员-Java基础总结08——集合与集合框架(…
- 黑马程序员_java基础知识总结(3)集合框架
- 黑马程序员——java基础----集合框架知识点总结(一)
- 黑马程序员---Java基础总结--集合
- [Java基础]List,Map集合总结
- Java基础总结之集合
- 黑马程序员 java基础--map集合总结
- java基础学习之集合概念总结
- 黑马程序员——高新技术---Java基础-集合特点和数据结构总结
- java对集合和迭代的操作基础总结
- 黑马程序员————Java基础日常笔记---对集合的理解与总结二
- 黑马程序员———Java基础------集合框架知识点总结(二)
- 黑马程序员:Java基础总结----集合框架的工具类
- 黑马程序员 Java基础知识总结-j集合框架
- 黑马程序员——Java基础---集合总结
- 黑马程序员 11 Java基础教学 - 11 - 集合框架总结
- 黑马程序员——Java基础——Collection集合的总结
- 黑马程序员-Java基础-集合类总结