淘客网站如何建设自己数据库,网站广告弹窗代码,建筑工程网招采,阿里巴巴做公司网站前言#xff1a;Java最初版本只为最常用的数据结构提供了很少的一组类#xff1a;Vector、Stack、Hashtable、BitSet和Enumeration接口。其中#xff0c;Enumeration接口提供了一种用于访问任意容器中各个元素的抽象机制。与现代数据结构类库常见情况一样#xff0c;Java集…前言Java最初版本只为最常用的数据结构提供了很少的一组类Vector、Stack、Hashtable、BitSet和Enumeration接口。其中Enumeration接口提供了一种用于访问任意容器中各个元素的抽象机制。与现代数据结构类库常见情况一样Java集合类库将接口interface和实现implementation分离。
1、队列Queue接口
1.1、规则可以在队列末尾添加元素在队列头部删除元素查找队列中元素的个数。遵循“先进先出”的规则。
1.2、实现方式使用循环数组例如ArrayDeque或者使用链表例如LinkedList。循环数组的效率比链表高但是循环数组是一个有界集合因此容量有限。如果程序需要的对象数量没有上限最好考虑使用链表。
1.3、Abstract类的APIAPI文档中有一组名字以Abstract开头的类是为类库实现者设计的如有需要扩展这些类比实现Queue接口中的所有方法方便得多。
2、Collection接口Java类库中集合类的基本接口。
2.1、两个基本方法Collection接口有很多方法其中
1add(E e)方法向集合添加元素。如果添加元素确实改变了集合则返回true如果集合没有变化则返回false。
2iterator()方法返回一个实现了Iterator接口的迭代器对象可以用来依次访问集合中的元素。
3、迭代器IteratorIterator接口包含4个方法其中
1next()方法通过反复调用可以逐个访问集合中的元素。但如果达到集合的末尾此方法会抛出NoSuchElementException。因此需要先用hasNext()方法判断是否还有下一个元素。
2hasNext()方法如果迭代器还有供访问的元素返回true否则返回false。调用next()方法之前需先通过此方法判断。 CollectionString c new ArrayList();IteratorString iterator c.iterator();while (iterator.hasNext()){String s iterator.next();System.out.print(s);}
3可以使用“for each”循环更加简练地表示同样的循环操作: CollectionString c new ArrayList();for (String str : c) {System.out.print(s);}
Java SE 8中还可以使用 forEachRemaining方法并提供一个lambda表达式。 CollectionString c new ArrayList();c.iterator().forEachRemaining(e-{System.out.print(e);});
4remove()方法删除上一次调用next()方法时返回的元素。对next方法和remove方法的调用具有互相依赖性如果调用remove之前没有调用next将会抛出一个IllegalStateException。
5区别Java集合类库的迭代器与其他类库的迭代器在概念上有所区别。传统集合类库诸如C标准模板库迭代器是根据数组索引建模的给定一个这样的迭代器就可查看指定位置上的元素如同知道数组索引i就可以查看数组元素a[i]。而Java迭代器却是查找操作与位置变更紧密相连查找元素的唯一方法是调用next方法而迭代器会越过下一个元素并返回越过的那个元素的引用。
6元素访问顺序集合类型不同会影响元素访问的顺序。例如ArrayList迭代器从索引0开始每迭代一次索引值加1。而HashSet元素出现的顺序是随机的。
4、集合框架中的接口集合有两个基本接口Collection和Map
4.1、List接口
1List是一个有序集合ordered collection元素会添加到容器中的特定位置。可以采用两种方式访问元素迭代器访问或者随机访问random access即使用一个整数索引来访问。
2实际上有两种有序集合性能开销有很大差异。一种是由数组支持的有序集合可以快速地随机访问适合使用List方法并提供一个整数索引来访问一种是链表随机访问很慢最后使用迭代器来遍历。
3集set集的add方法不允许增加重复的元素要适当地定义集的equals方法只要两个集包含同样的元素不管元素顺序就认为是相等的。hashCode方法的定义要保证包含相同元素的两个集会得到相同的散列码。