首页 > 编程知识 正文

java中的集合类有哪些,java输出类信息

时间:2023-05-05 00:23:46 阅读:41714 作者:4841

以前在进行集合输出时,使用了toString ()或List接口的get ()方法。 这些都不是集合的标准输出。 标准而言,集合输出有迭代器、列表迭代器、枚举、foreach四种手段。

1. 迭代输出:Iterator

在JDK1.5之前,在Collection接口中定义了iterator ()方法,可以使用该方法获取iterator接口的实例化对象。 从JDK1.5开始,此方法已升级为Iterable接口的方法。 无论提高多少级,只要Collection有这种方法,List、Set也一定有这种方法。

迭代器接口的最初设计实际上有三种抽象方法。

以下元素:公共布尔hasnext () : 获取当前元素:公共e next (; 元素:公共默认语音删除(; 此方法从JDK1.8变为default完整方法。 yydxyz :在标准迭代器中使用

import java.util.ArrayList; import java.util.Iterator; import java.util.List; 公共类测试{ publicstaticvoidmain (字符串[ ] args ) { ListString list=new ArrayList ); list.add(Hello ); list.add (世界); list.add(Hello ); list.add(Java ); iteratorstringiterator=list.iterator (; wile(iterator.Hasnext () ({ String str=iterator.next ) ); system.out.println(str; Iterator接口提供的remove ()方法主要解决的是删除集合内容的操作。

yydxyz :删除元素

import java.util.ArrayList; import java.util.Iterator; import java.util.List; 公共类测试{ publicstaticvoidmain (字符串[ ] args ) { ListString list=new ArrayList ); list.add(Hello ); list.add (世界); list.add(Hello ); list.add(Java ); iteratorstringiterator=list.iterator (; wile(iterator.Hasnext () ({ String str=iterator.next ) ); 使用if(str.equals('hello ) ) /集合提供的remove )方法时,concurrentmodificationexception//list.remove ) ) ' ' 迭代器移除(使用方法时,异常的iterator.remove ); 继续; }system.out.println(str; }}错误原因: ArrayList源代码中有一个参数modCount,表示集合的修改次数,每次修改集合modCount的值时为1。 如果在遍历集合时将modCount值传递给Iterator,并在遍历过程中修改元素,则modCount的值将发生变化,modCount的值将不再与原来在Iterator中的值匹配,并引发异常。 http://www.Sina.com/http://www.Sina.com /

其存在的目的是:多线程下保证数据的安全性。

迭代器的输出具有只能向前和向后迭代内容的特点,但要进行双向迭代,必须依赖迭代器的子接口列表迭代器。 首先,让我们来看看这个接口定义的方法。

判断是否存在前一个元素: public boolean hasPrevious (; 获取前一元素:公共电子预览;

Iterator接口对象是由Collection接口支持的,但是ListIterator是由List接口支持的,List接口提供有如下方法:

取得ListIterator接口对象:public ListIterator listIterator();

yydxyz:观察ListIterator接口的使用

import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Hello"); list.add("World"); list.add("hello"); list.add("Java"); ListIterator<String> listIterator = list.listIterator(); System.out.print("从前往后输出: "); while (listIterator.hasNext()) { System.out.print(listIterator.next()+"、 "); } System.out.print("n从后往前输出: "); while (listIterator.hasPrevious()) { System.out.print(listIterator.previous()+"、 "); } }}

如果要想实现由后向前的输出,那么应该首先进行从前向后的输出,否则无法实现双向。

3. 枚举输出:Enumeration
在JDK1.0的时候就引入了Enumeration输出接口,而在JDK1.5的时候对其也做了更正,主要是追加了泛型的应用。首先来观察Enumeration的接口定义:

判断是否有下一个元素:public boolean hasMoreElements();取得元素:public E nextElement();

但是要想取得这个接口的实例化对象,是不能依靠Collection、List、Set等接口的。只能够依靠Vector子类,因为Enumeration最早的设计就是为Vector服务的,在Vector类中提供有一个取得Enumeration接口对象的方法:

取得Enumeration接口对象:public Enumeration elements()

yydxyz:使用 Enumeration 输出

import java.util.Enumeration;import java.util.Vector;public class Test { public static void main(String[] args) { Vector<String> vector = new Vector<>(); vector.add("Hello"); vector.add("World"); vector.add("hello"); vector.add("Java"); Enumeration<String> enumeration = vector.elements(); while (enumeration.hasMoreElements()) { System.out.println(enumeration.nextElement()); } }}

目前仍有一些操作类库上只支持Enumeration,而不支持Iterator。

foreach输出
从JDK1.5开始foreach可以输出数组,实际上除了数组之外也可以输出集合。
yydxyz:使用 foreach 输出

import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Hello"); list.add("World"); list.add("hello"); list.add("Java"); for (String string : list) { System.out.println(string); } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。