JAVA中的集合框架
2015-10-25 10:54
549 查看
public interface Iterable<T>
public interface Iterator<E>
一个典型的iterator模式的应用。
注意注释中提到的Iterator和enumerations一个不同点是方法名的提高,命名还是很重要的。
public interface Collection<E>
extends Iterable<E>
比较有意思。
线程策略由实现类决定。
注意contains并不是一定要使用equals,而是把自由给了实现类。
很多可选操作。
如果要继承equals方法需要特别小心,默认的约定是List和Set永远不相等。
JAVA代码:
// Query Operations
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
// Modification Operations
boolean add(E e);
boolean remove(Object o);
// Bulk Operations
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
// Comparison and hashing
boolean equals(Object o);
int hashCode();
2 Set
public boolean removeAll(Collection<?> c) {
boolean modified = false;
if (size() > c.size()) {
for (Iterator<?> i = c.iterator(); i.hasNext(); )
modified |= remove(i.next());
} else {
for (Iterator<?> i = iterator(); i.hasNext(); ) {
if (c.contains(i.next())) {
i.remove();
modified = true;
}
}
}
return modified;
}
3 List
// Positional Access Operations
E get(int index);
E set(int index, E element);
void add(int index, E element);
E remove(int index);
// Search Operations
int indexOf(Object o);
int lastIndexOf(Object o);
// List Iterators
ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);
// View
List<E> subList(int fromIndex, int toIndex);
4 Map
public V get(Object key) {
Iterator<Entry<K,V>> i = entrySet().iterator();
if (key==null) {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (e.getKey()==null)
return e.getValue();
}
} else {
while (i.hasNext()) {
Entry<K,V> e = i.next();
if (key.equals(e.getKey()))
return e.getValue();
}
}
return null;
}
Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
java集合框架:
1. 什么是框架:类库的集合
2.集合框架:用来表示和操作的统一的架构,包含了实现集合的接口与类
3.集合:存放数据的容器
集合框架包含了两部分:一部分是接口,一部分是类
4.为什么会出现接口:因为集合框架中的很多类 功能是相似的【所以用接口来规范类】
List接口实现类很多:
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector 一般情况下主要用到的是ArrayList,和LinkedList,其他的类并不是说没用
ArrayList
ArrayList允许所有元素包括null。ArrayList没有同步
理解一:ArrayList 使用一个内置的数组来存储元素,这个数组的起始容量是10.当数组需要增长时,新的容量按如下公式获得:新容量=(旧容量*3)/2+1,也就是说每一次容量大概会增长50%。这就意味着,如果你有一个包含大量元素的ArrayList对象,那么最终将有很大的空间会被浪费掉,这个浪费是由 ArrayList的工作方式本身造成的。如果没有足够的空间来存放新的元素,数组将不得不被重新进行分配以便能够增加新的元素。
对数组进行重新分配,将会导致性能急剧下降。如果我们知道一个ArrayList将会有多少个元素,我们可以通过构造方法来指定容量。我们还可以通过trimToSize方法在 ArrayList分配完毕之后去掉浪费掉的空间。
理解二:ArrayList是用数组实现的,它不是真正的链表,在初始化的时候它先对数组设置一个初始容量,当数组空间不够的时候,它会重新构建一个容量更大的数组,然后把先前的元素拷贝进去
不管是一还是二暂且不管他存放元素的方式。唯一一点可以确认他使用内置的数组
LinkedList
List接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,
LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque)。此类实现 Queue 接口,为 add、poll 等提供先进先出队列操作。其他堆栈和双端队列操作可以根据标准列表操作方便地进行再次强制转换。虽然它们可能比等效列表操作运行稍快,但是将其包括在这里主要是出于方便考虑.
相关文章推荐
- java 获取当前时间及年月日时分秒
- Java 理论与实践: 正确使用 Volatile 变量
- JDK1.5——synchronized升级版(显示的Lock操作)
- Java调用.NET 的Web Service服务故障排除
- 基于lucene的java开发环境配置
- java多进程中waitFor()的作用
- java多进程中waitFor()的作用
- 为经典版eclipse增加web and JavaEE插件
- Spring MVC 如何上传多个文件到指定位置
- struts 下载中文名文件
- java eclipse初次使用前的配置技巧汇总
- Spring @Transactional使用的示例
- Spring学习笔记之aop动态代理(3)
- Spring学习笔记之aop动态代理(3)
- Java编程中二维数组的初始化和基本操作实例
- Gradle Plugin Samples 之 Gradle Eclipse Compatible (三)
- eclipse用华为手机调试,用file explorer 打开data/data下的包名导出数据库
- struts2中action的XXX_* metend={1}
- 早晨起来看了看流的概念,又搞出乱码了-.-! 最后解决了。
- struts中关于action的通配符的使用