集合总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合总结相关的知识,希望对你有一定的参考价值。
一.集合框架 :
1.Java集合框架的三大接口:
①Collection所有集合类的根接口。
②Map映射接口,存放键值对。
③Iterator遍历集合的迭代接口。
2.Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。
二.Collection接口:
1.Collection<E>接口
Collection意即集合,是所有集合类的根接口,同时Collection接口是一个泛型接口。
2.方法:add(E): 添加对象;
Iterator<E> iterator():生成迭代器对象,进而可以迭代集合中的元素。
int size();获取集合中元素数量。
4.List 有序的集合,元素有序存入。
5.Set无重复的集合,即存入的元素不重复。
6.Queue队列,jdk1.5版本新增接口,Queue实现了“先进先出”(FIFO)的存储结构。Queue是Collection的子接口,具有所有集合基本操作,除此之外,Queue还提供了一些新的插入、提取、查询等方法。
三.Map接口:
①Map接口
Map中保存的是键值对Map<key,Value> ,Key值不允许重复,如果重复,则覆盖。
②常用方法
put(K key,V value)该方法可以将key和value存到Map对象
get(Object key)该方法可以根据key值返回对应的value。
size()返回Map对象中键值对的数量。
③HashMap 较常用的Map集合类。 key值的hashCode和equals保证元素唯一性。
④TreeMap 不仅可以保证key不重复,还可以对value数据进行排序。
⑤HashTable jdk1.0中定义的类,实现同步。
四、List
1.继承了Collection接口,并且扩展出属于自己的方法;
2.List 集合中的元素都是与索引有关系的,因此List集合扩展的方法都是与索引有关系的。
3.add(int index,E)……添加元素在所对应的索引位置 。
4.List 是个接口,有三个实现的类:
①ArrayList:为数组列表,数据采用数组的方式存储,使用连续内存存储。ArrayList是Java语言中可变长度数组的实现。
②LinkedList:称为链表,该集合类型实现了“链表”的数据结构。值得一提的是,LinkedList不仅实现了List接口,还实现了Queue接口,可以说链表同时也可以作为一个队列对象使用。使用方式与ArrayList类似。
③Vector:Vector是JDK1.0版本中的集合类,后来修改为实现了List接口。Vector的功能几乎都可以被ArrayList替代,主要区别是Vector是同步的,而ArrayList不是同步的。
5.ArrayList的常用方法:
add(Object o);->集合中添加数据
remove(Object o)->删除集合中的数据
add(int index, Object element)->给集合中某个索引位置添加一个数据
get(int index)->获取集合中某个位置的信息
6.LinkedList是以链表的方式存放的,每个节点上存放的是数据信息。
①常用方法:
add(E element)—向链表末尾添加一个新的节点,该节点中的数据是参数element指定的对象。
add(int index, E element)—向链表的指定位置添加一个新的节点,该节点中的数据是参数element指定的对象。
②扩展的方法:
addFirst(E element)—向链表的头添加新节点,该节点中的数据是参数element指定的对象。
addLast(E element)—向链表的末尾添加新节点,该节点中的数据是参数element指定的对象。
7.ArrayList和LinkedList的遍历
①for循环遍历:通过索引值获取所对应的数据信息
②增强for循环的遍历:也是通过迭代器的方法获取信息
③迭代器遍历(Iterator):通过集合返回迭代器。
例:for循环遍历
public class GenericsList {
public static void main(String[] args) {
//创建用户对象
User user=new User("张三");
User user1=new User("李四");
//创建集合对象,存放用户对象
List<User> userList=new ArrayList<User>();
userList.add(user);
userList.add(user1);
for(int i=0;i<userList.size();i++){
System.out.println(userList.get(i));
}
}
}
增强for循环:
public class GenericsList {
public static void main(String[] args) {
//创建用户对象
User user=new User("张三");
User user1=new User("李四");
//创建集合对象,存放用户对象
List<User> userList=new LinkedList<User>();
userList.add(user);
userList.add(user1);
for(User userInfo:userList){
System.out.println(userInfo);
}
}
}
五、Set接口
1.Set接口继承了Collection接口。Set中所存储的元素是不重复的,但是是无序的。
2.Set接口有两个实现类:
①HashSet底层是哈希码值,基于HashMap实现的。HashSet类中的元素不能重复,即彼此调用equals方法比较,都返回false。
②TreeSet元素不重复,并且元素实现了排序。可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口。
③HashSet的常用方法:
add(E o)将指定的元素添加到set。
④TreeSet的常用方法:
add(E o):将指定的元素添加到 set(如果尚未存在于该set中)。
first():返回已排序set中当前的第一个(最小)元素。
last():返回已排序set中当前的最后一个(最大)元素。
⑤HashSet和TreeSet的遍历:增强for循环和迭代器遍历。
例:增强for循环遍历
public class SetExemple {
public static void main(String[]
args) {
User user1=new User(“王辉");
User user2=new User("qw");
Set<User> userSet=new HashSet<User>();
Set<User> userSet=new TreeSet<User>();
userSet.add(user1);
userSet.add(user2);
//增强for循环遍历
for(User user:userSet ){
System.out.println(
user.getUserName());
}
}
}
六、Map集合的常用实现类
1.HashMap:元素的key值不能重复,即彼此调用equals方法,返回为false。排列顺序是不固定的。
2.TreeMap:所有的元素都保持着某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。
3.HashMap与HashMap的常用方法
put<key,value>—>存放对象
get(key); —>获取key所对应的数据。
keySet() —> 返回此映射中所包含的键的 set 视图。
4.TreeMap适用于按自然顺序或自定义顺序遍历键(key)。
5.TreeMap根据key值排序,key值需要实现Comparable接口,实现compareTo方法。TreeMap根据compareTo的逻辑,对key进行排序。
例:根据字符串的字典顺序。
User user1=new User("王敏");
User user2=new User("王辉");
TreeMap<String,User> tree=new TreeMap<String,User>();
tree.put(“001", user1);
tree.put(“002", user2);
以上是关于集合总结的主要内容,如果未能解决你的问题,请参考以下文章
Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结
--------------------------------------集合List去重总结------------------------