yield---迭代集合的不同方式

yield return 语句返回集合的一个元素

yield break 可停止迭代

------------------------------------------------------------------Student.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
    public class Student
    {
        string[] str = new string[] { "张飞", "关羽", "贝贝", "香香" };
        /// <summary>
        /// 正序迭代
        /// </summary>
        /// <returns></returns>
        public IEnumerator<string> GetEnumerator()
        {
            for (int i = 0; i < str.Length; i++)
            {
                yield return str[i];
            }
        }
        /// <summary>
        /// 倒序迭代
        /// </summary>
        /// <returns></returns>
        public IEnumerable<string> Reverse()
        {
            for (int i = str.Length-1; i >= 0; i--)
            {
                yield return str[i];
            }
        }
        /// <summary>
        /// 自定义迭代
        /// </summary>
        /// <param name="i">开始索引</param>
        /// <param name="j">长度</param>
        /// <returns></returns>
        public IEnumerable<string> Subset(int index, int length)
        {
            for (int i = index; i < index+length; i++)
            {
                yield return str[i];
            }
        }
    }
}

------------------------------------------------------------------主程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student();
            foreach (var item in s)//正序迭代
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("reverse");
            foreach (var item in s.Reverse())//倒序迭代
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("subset");//自定义迭代
            foreach (var item in s.Subset(1,1))
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}
时间: 2024-10-14 03:07:46

yield---迭代集合的不同方式的相关文章

迭代集合的方式

1)对list和set集合的迭代 1>通过iterator迭代 Iterator<Integer> it = set.iterator(); while (it.hasNext()) { Integer key = it.next(); System.out.println(key + "\t"); } 2>通过forEach循环 for (String name : list) { System.out.print(name + '\t'); } System

JAVA中断迭代的几种方式

JAVA中断迭代的几种方式 本文总结一下JAVA中中断迭代的几个关键字的用法,return就不说了,重点说一下break和continue以及JAVA中怎样实现其他语言中的goto关键字的用法. break和continue的区别 两者都有跳出循环的作用,不同的是break跳出循环后,直接终止了for或者while循环,不会执行后面的迭代,而continue跳出循环指的是跳出本次迭代,接着执行下一次迭代. goto介绍 goto起源于汇编语言的程序控制,若A成立,则跳到这里,否则跳到那里. 尽管

各种集合的遍历方式

List ArrayLIst ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("苹果"); arrayList.add("香蕉"); arrayList.add("西瓜"); arrayList.add("葡萄"); //for循环 for(int i=0; i < arrayList.size();i++) { Sys

Java中Map集合的遍历方式

方法一:在for-each循环中使用entries来遍历 1 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 2 3 for (Map.Entry<Integer, Integer> entry : map.entrySet()) { 4 5 System.out.println("Key = " + entry.getKey() + ", Value = "

java之增强for循环以及几种删除集合元素的方式

1 public class Demo1_Foreach { 2 3 /* 4 * 增强for循环格式: 5 * for(元素数据类型 变量 : 数组或者Collection集合){ 6 * 使用变量即可,该变量就是元素 7 * } 8 * 实质:底层依赖的是迭代器 9 */ 10 public static void main(String[] args) { 11 12 //demo1(); 13 List<String> l = new ArrayList<>(); 14 l

Java集合的遍历方式

Map的遍历 1.通过map.entrySet遍历Key和Value Map<Integer,Integer> map = new HashMap<>(); map.put(1, 10); map.put(2, 8); for(Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + " ---- " + entry.getVal

C# foreach 值类型及引用类型迭代变量改变的方式

C#中foreach不能改变迭代变量的值 然而此种说法只适用与值类型,更改值类型时会改变在栈上的内存分布 引用类型由于是引用地址的变更,不影响内存分布,所以能够在foreach中更改 至于引用类型中的特殊string类型,猜想是因为string类型的变更不是地址的更改,而是会在堆上面重新开辟一块,所以应该也是会影戏到内存分布 原文地址:https://www.cnblogs.com/X-Q-X/p/10402479.html

List集合去重各种方式汇总

package com.sb.test; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFacto

eclipse-搭建maven的war项目集合spring注解方式

工具:eclipse 4.4.2 版本号:20150219-0600 jdk:1.7 1.下图创建maven工程,然后next 下图选择工程保存位置(这里选择默认),next 下图选择webapp项目(war包,mvaen默认选择的quickstart一般为jar工程),next 下图,其中 group ID:一般设置起点报名,随便定义 artifact ID:项目名称 Version:版本号名称 package:初始化类文件名称 其他暂不填finish 项目新建完成 结构 2.接下来到需要的j