java集合学习一
1.Set存放的元素是无序的不可重复。2.List存放的元素为有序可重复。3.重写equals方法,一般最好重写hasCode方法,当对象作为key的时候及索引,会使用hasCode方法进行查找。4.容器对象在调用remove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和 hashCode方法。对于自定义的类型,需要重写equals和has
·
1.Set存放的元素是无序的不可重复。
2.List存放的元素为有序可重复。
3.重写equals方法,一般最好重写hasCode方法,当对象作为key的时候及索引,会使用hasCode方法进行查找。
4.容器对象在调用remove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和
hashCode方法。对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则。相等的对象
应该具有相等的hashCode。
5.ArrayList底层是动态数组实现的,便于查找,读快
6.LinkedList底层以双向链表实现,便于插入和删除,读慢(Hash介于Array(读快改慢)和Linked(改快读慢)两者之间)
7.Set容器类有HashSet,TreeSet等
10.从上我们可以看出Collection继承了了 Iterable<E>接口,那么我们在看看 Iterable<E>接口的源码,此接口只有3个函数:
2.List存放的元素为有序可重复。
3.重写equals方法,一般最好重写hasCode方法,当对象作为key的时候及索引,会使用hasCode方法进行查找。
4.容器对象在调用remove,contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和
hashCode方法。对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则。相等的对象
应该具有相等的hashCode。
5.ArrayList底层是动态数组实现的,便于查找,读快
6.LinkedList底层以双向链表实现,便于插入和删除,读慢(Hash介于Array(读快改慢)和Linked(改快读慢)两者之间)
7.Set容器类有HashSet,TreeSet等
8.Map接口的实现类有HashMap(hash实现)和TreeMap(二叉树实现)等。
9.以下是java中集合的思维导图,总结了Java中集合的关系,区别,特点
由图可以看出,Java中的集合由三部分主成,包括Map,Collection,Collections,
其中Map存储的时key和value,Collection是Set和List的父类,Collections是集合的操作类,可以对集合进行处理。
Collection是List和Set的
下面先分析下Collection的源码:
public interface Collection<E> extends Iterable<E> {
/*size()函数返回集合的大小,即集合有多少个元素,返回值为int型
* */
int size();
//判断集合是否为空,为空则返回true,不为空则返回false
boolean isEmpty();
//判断指定的元素是否在集合中,在则返回true,不再则返回false
boolean contains(Object o);
//实现的iterator接口,把集合的元素转换成迭代器进行输出
Iterator<E> iterator();
//把集合元素转换成Object数组
Object[] toArray();
// 返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
<T> T[] toArray(T[] a);
//把元素e存放到集合中
boolean add(E e);
//删除集合中的元素o
boolean remove(Object o);
//是否包含指定的集合元素
boolean containsAll(Collection<?> c);
//把集合元素c添加到本集合中
boolean addAll(Collection<? extends E> c);
//移除机会中说有的集合元素c
boolean removeAll(Collection<?> c);
//仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
boolean retainAll(Collection<?> c);
//清除所有的集合元素
void clear();
//重写equals方法,用来判断元素是否相等
boolean equals(Object o);
//重写的hashCode方法,辅助判断元素是否相等,返回此 collection 的哈希码值
int hashCode();
}
10.从上我们可以看出Collection继承了了 Iterable<E>接口,那么我们在看看 Iterable<E>接口的源码,此接口只有3个函数:
public interface Iterator<E> {
//刚开始迭代的指针是指向第一元素前面
//如果仍有元素可以迭代,则返回 true
boolean hasNext();
//返回迭代的下一个元素。
E next();
//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
void remove();
}
通过上面的基础知识相信对java中集合的基础知识应该有所了解,学东西要从源头学习,才能学的扎实,所以有空的话,要多看源码,学习源码的思想和代码风格。
本文为原创,转载请著名来自:http://blog.csdn.net/j903829182/article/details/38497469
更多推荐
已为社区贡献4条内容
所有评论(0)