java集合类

Posted coder-wf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合类相关的知识,希望对你有一定的参考价值。

Java集合类复习

java集合类是由java.util包中提供的用于存放对象的引用的类。

主要用于完成数据库和数据结构的功能。

集合类主要有三种类型:list(列表结构集合类)

map(映射(散列)结构集合类)

set(集)

如图所示:实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口

技术图片

1、所有集合类都实现了提供遍历集合中元素的Iterator迭代器接口,对一个集合声明一个迭代器Iterator it=arr.iterator();,会提取出集合中的所有元素。

主要包含三种方法:1、hasNext()-判断是否还有下一个元素;

           2、next()-返回下一个元素;3、remove()-移除当前元素。

2、集合总接口Collection分支列表接口List和集接口Set。

3、列表接口List被实现集合类Vector、ArrayList、LinkedList,

Stack是Vector的子类,使用压栈方法的后进先出的存储结构。

Vector类似数组的表,可自动100%增加容量来存储元素,可设置初始容量,数据量大时较ArrayList有优势,使用从int 0开始的下标存储或检索对象(可以相同),随机查询get(int a)方便,适合查询或按顺序存取对象,但随机存取add和remove需要重排之后的数据,是唯一的线程同步列表集合类,同步但影响效率。

ArrayList与Vector相同,但是线程异步的,不需要线程安全性时适用,可提高效率。容量自增量为50%。

LinkedList是链表结构,不是基于数组Array,每个节点都包含本身信息和上下节点信息的引用,随机add和remove只需要改变上下信息就可以了,但随机查询get(int a)虽然也有下标,但内部是通过从头部或尾部遍历来查找的,适用于增删数据。

4、集接口Set被实现集合类HashSet和TreeSet,LinkedHashSet是HashSet的子类。Set集实现基础是HashMap,它不按特定方式排序,只是简单的把对象放入集中,所以不允许对象重复,TreeSet实现了SortedSet接口,加入了对象比较方法,对对象用二叉排序树升序排序。LinkedHashSet是链表结构。

5、Map映射接口是另一种集合类接口,特殊点在于它包含的是键值对key-vaule,键key是唯一不能重复的,值value可以重复。键key决定了值value的位置,添加put(Spring key,Objict a)、检索get(key)都需要相应的键key来完成。

      映射集合类HashMap,HashTable,TreeMap,WeakHashMap,LinkedHashMap是HashMap的子类,保存了记录的插入顺序,遍历时先进先出,具有HashMap的全部特性。   

键所属的类必须实现equals()比较和hashcode()散列码方法。

      HashMap最常用,允许Value为空,只允许唯一键key为null。根据键的散列码hashcode来获取值,访问速度快,数据顺序随机。

      HashTable是HashMap的线程同步版,但所有键必须非空。

      WeakHashMap中只维持key-value对的生命周期,如果key不再被引用将被舍弃。

      TreeMap实现SortMap接口,将信息根据键升序排列,数据是有序的,不允许键为空,非同步。

6、迭代器遍历的使用:对于集合arr

      Iterator it=arr.iterator();

      While(it.hasNext())

{Object a=it.next();

System.out.println(a);}

7、Map映射集合类的遍历,通过键的迭代获取值遍历:

      Iterator it=map.keySet().iterator();

      While(it.hasNext()){Object a=it.next();

System.out.println(map.get(a));}

8、从集合类中get()取出一个对象,该对象默认为Object型,大多需要向下强制转型为原类型,此处过程易出现异常,所以在声明集合类时,如果该集合中存放属于同一类的对象,可以同时声明此类为泛型:

ArrayList<String> arr=new ArrayList<String>();

9、常用方法:

list集合类:添加add(a);add(int index,a);移除remove(int index);

Remove(a);清空clear();查询boolean contains(a);

获取a get(int index);替换set(int index,a);查数量arr.size();是否空isEmpty();将容量调整为当前大小trimToSize();

获取全部对象Object[] aa=arr.toArray();

Vector独有设置大小setSize(int newSize);

      LinkedList有更多addFirst(a);addLast(a);getFirst();方法。

Set集方法:add(a);clear();contains(a);isEmpty();remove(a);size();

Map映射方法:添加put(key,V);移除remove(key); 清空clear();

获取值V get(key);查数量size();是否空isEmpty();查询判断containsKey(key);containsValue(value); 获取全部Key arr.keySet();获取全部Value arr.values();获取全部Key-V arr.entrySet();

以上是关于java集合类的主要内容,如果未能解决你的问题,请参考以下文章

java集合类

java集合类

一文搞定Java集合类,你还在为Java集合类而烦恼吗?

java 集合类

java集合类哪个函数可以

40个Java集合类面试题和答案(转载)