标签:
为了保存数量不确定的数据或者提供映射关系的数据,Java提供了集合类,也称作集合类,Collection和Map分别为两个根接口。两个接口体系的继承系如下图
(图片来源于网络)
Collection接口下有List、Set、Queue三个子接口(着重讲前两个接口)。Collection定义了如下一些操作集合的方面:
Set接口的所含有元素不能重复。Set常用的几个实现类
HashSet | 无序地遍历成员,成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。 |
LinkedHashSet | HashSet的一个子类,按元素添加顺序访问集合中的元素。 |
TreeSet | SortSet接口的实现类,支持子集等按要求顺序的操作 |
EnumSet | 枚举类集合,所有元素必须是同一枚举类的枚举值, |
Set实现类性能比较:HashSet的性能比TreeSet的性能要好,TreeSet需要维持元素次序带来的开销。HashSet的子类LinkedHashSet,插入删除性能比HashSet要差一点,需要维持链表带来的开销,但是遍历的时候因为有链表,所以比HashSet稍快。EnumSet的性能最好的,就是有元素必须是同一个枚举类的局限性。这几个实现类都是线程不安全,同时访问需要自己保证Set集合的同步性。
List接口:List集合是一个元素有序、元素可以重复的集合,元素都有对应的索引值。
ArrayList实现类封装了一个动态的、允许再分配的Object[]数组。提供了两个方法重新分配Object[]数组。
void ensureCapacity(int minCapacity) //增大minCapacity大小的数组长度
void trimToSize() //调整集合的数组长度为当前元素的个数
ArrayList例子
1 public static void main(String[] args){ 2 List<String> books=new ArrayList<>(); 3 books.add(new String("第一本")); 4 books.add(new String("第二本")); 5 books.add(new String("第三本")); 6 books.add(new String("第四本")); 7 Iterator<String> it=books.iterator(); 8 while(it.hasNext()){ 9 String book=it.next(); 10 System.out.println(book); 11 if(book.equals("第三本")) 12 { 13 it.remove(); 14 } 15 } 16 System.out.println(books); 17 18 }
集合遍历问题
一、for循环遍历
1 public class CollectionTraversalFor { 2 public void forr(List<String> list){ 3 for(int i=0;i<list.size();i++){ 4 String book=list.get(i); 5 System.out.println(book); 6 } 7 } 8 }
二、foreach遍历
1 public class CollectionTraversalForeach { 2 public void Foreach(List<String> list){ 3 for(String a :list){ 4 System.out.println(a); 5 } 6 } 7 }
三、Iterator遍历
1 public class CollectionTraversalIterator { 2 public void iterator(List<String> list){ 3 Iterator it=list.iterator(); 4 while(it.hasNext()){ 5 String book=(String) it.next(); 6 System.out.println(book); 7 } 8 } 9 }
Map接口
Map集合用于保存具有映射关系的数据,有两组值,一组是key,另一组是value。
Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。
标签:
原文地址:http://www.cnblogs.com/tony2016/p/5654985.html