重温java知识(三十六、类集框架之九:集合输出)

4种方式输出:

  • Iterator:专门的迭代输出接口【单向】
  • ListIterator:双向迭代输出【List集合才能用】
  • Enumeration:枚举输出
  • foreach:【只支持Set或者List集合】

1、使用Iterator输出Set集合的例子:

package com.mydemo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class OutputDemo {

    public static void main(String[] args) {

        // 创建Set集合
        Set<String> all = new HashSet<>();

        // 保存数据
        all.add("火影");
        all.add("火影");      // 保存重复的数据
        all.add("水影");
        all.add("风影");
        all.add("土影");
        all.add("雷影");

        // 实例化Iterator接口对象
        Iterator<String> iterator = all.iterator();

        // 集合是否有数据
        while (iterator.hasNext()) {
            // 获取每一个数据
            String str = iterator.next();

            // 删除当前数据
            if ("土影".equals(str)) {
                iterator.remove();
            } else {
                // 输出数据
                System.out.print(str + "、");
            }
        }
    }
}

运行结果:
水影、风影、雷影、火影、

2、ListIterator执行双向迭代操作的例子【ListIterator接口只能够通过List子接口进行实例化(Set子接口无法使用ListIterator接口输出)】:

package com.mydemo;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class OutputDemo {

    public static void main(String[] args) {

        // 创建List集合
        List<String> all = new ArrayList<>();

        // 保存数据
        all.add("火影");
        all.add("火影");      // 保存重复的数据
        all.add("水影");
        all.add("风影");
        all.add("土影");
        all.add("雷影");

        // 实例化ListIterator接口对象
        ListIterator<String> listIterator = all.listIterator();

        System.out.println("由前向后输出:");
        // 集合是否有数据
        while (listIterator.hasNext()) {
            // 获取每一个数据
            String str = listIterator.next();

            // 删除当前数据
            if ("土影".equals(str)) {
                listIterator.remove();
            } else {
                // 输出数据
                System.out.print(str + "、");
            }
        }

        System.out.println();

        System.out.println("由后向前输出:");
        // 集合是否有数据
        while (listIterator.hasPrevious()) {
            // 获取每一个数据
            String str = listIterator.previous();

            // 删除当前数据
            if ("土影".equals(str)) {
                listIterator.remove();
            } else {
                // 输出数据
                System.out.print(str + "、");
            }
        }
    }
}

运行结果:
由前向后输出:
火影、火影、水影、风影、雷影、
由后向前输出:
雷影、风影、水影、火影、火影、

3、使用Enumeration输出Vector集合数据的例子:

package com.mydemo;

import java.util.Enumeration;
import java.util.Vector;

public class OutputDemo {

    public static void main(String[] args) {

        // 创建Vector集合
        Vector<String> all = new Vector<>();

        // 保存数据
        all.add("火影");
        all.add("火影");      // 保存重复的数据
        all.add("水影");
        all.add("风影");
        all.add("土影");
        all.add("雷影");

        // 实例化ListIterator接口对象
        Enumeration<String> enumeration = all.elements();
        
        // 集合是否有数据
        while (enumeration.hasMoreElements()) {
            // 获取每一个数据
            String str = enumeration.nextElement();
            
			/**
             * Enumeration接口并没有提供删除方法,
             * 只支持输出操作
             */
             
            System.out.print(str + "、");
        }
    }
}

运行结果:
火影、火影、水影、风影、土影、雷影、

4、使用Enumeration输出Vector集合数据的例子:

package com.mydemo;

import java.util.HashSet;
import java.util.Set;

public class OutputDemo {

    public static void main(String[] args) {

        // 创建Vector集合
        Set<String> all = new HashSet<>();

        // 保存数据
        all.add("火影");
        all.add("火影");      // 保存重复的数据
        all.add("水影");
        all.add("风影");
        all.add("土影");
        all.add("雷影");

        all.forEach(System.out::println);

        System.out.println("---------------------");

        for (String str : all) {
            System.out.print(str + "、");
        }
    }
}

运行结果:
水影
风影
土影
雷影
火影
---------------------
水影、风影、土影、雷影、火影、

5、自定义类使用foreach输出的例子:

package com.mydemo;

import java.util.Iterator;

public class OutputDemo {

    public static void main(String[] args) {

        // Iterable接口实例
        Message message = new Message();

        for (String str : message) {
            System.out.print(str + "、");
        }
    }
}

class Message implements Iterable<String> {

    // 信息内容
    private String[] content = new String[]{
            "张三", "李四", "王五"
    };

    // 操作脚本
    private int index;

    private class MessageIterator implements Iterator<String> {

        /**
         * 方法复写,判断是否存在内容
         *
         * @return
         */
        @Override
        public boolean hasNext() {
            // 判断是否存在内容
            return Message.this.index < Message.this.content.length;
        }

        /**
         * 获取数据
         *
         * @return
         */
        @Override
        public String next() {
            return Message.this.content[Message.this.index++];
        }
    }

    /**
     * 获取Iterator实例
     *
     * @return
     */
    @Override
    public Iterator<String> iterator() {
        return new MessageIterator();
    }
}

运行结果:
张三、李四、王五、
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值