Hoy vamos a ver el uso de un iterador distinto al que venimos viendo... algunos dirán "¿Por qué no lo diste antes?" pues la respuesta es simple, mi intención es que quede bien aprendido en ustedes, y la mejor forma de mostrar la potencia de este iterador (que es distinto al while y al for) es mostrando cómo funciona respecto de la programación orientada a objetos.
El iterador en especial es el foreach, que la idea general de este es poder iterar array un poco más complejos y con objetos bastante más complicados.
El uso es tan simple que lo convierte en una pavada, pero el entendimiento de como funciona es la cuestión grosa acá (no tienen que ser "grosos" para entenderlo, simplemente mirar, como hice yo cuando estudié esto... y ahora me gasto en postearlo en Taringa).
En primer lugar, en java para lograr lo mismo, si bien tiene una especie de foreach... tiene para hacer lo mismo de tres maneras, con una clase que se llama Iterator y que se instancia con un objeto que te devuelve el ArrayList de java que se llama iterator y que dentro de un while se ejecuta con la función HasNext() y dentro del encapsulamiento del while se iguala una instancia de una clase con el iterador y una función que se llama Next()... en pocas palabras son 5 líneas de código (con todo y las llaves).
La otra forma es con el for... donde tenemos un array, supongamos llamado "A" y tendremos que poner esta sentencia for(nombreClase a : A)... si bien funciona en Java, esto lo traté de ver bien como funcionaba en C# para ver si había alguna similitud.
Pues la hay! y es el foreach.
El ejemplo (la clase de ejemplo primero)
Y la principal donde se muestra el foreach, presten atención, es MUY parecido a lo que les expliqué de java, solo cambia la sintaxis levemente:
Para el siguiente veremos con qué les amplío el manejo de ArrayList, siendo que tiene ENORMES usos, sobre todo para mapeos en bases de datos.
Saludos, Lelale.
El iterador en especial es el foreach, que la idea general de este es poder iterar array un poco más complejos y con objetos bastante más complicados.
El uso es tan simple que lo convierte en una pavada, pero el entendimiento de como funciona es la cuestión grosa acá (no tienen que ser "grosos" para entenderlo, simplemente mirar, como hice yo cuando estudié esto... y ahora me gasto en postearlo en Taringa).
En primer lugar, en java para lograr lo mismo, si bien tiene una especie de foreach... tiene para hacer lo mismo de tres maneras, con una clase que se llama Iterator y que se instancia con un objeto que te devuelve el ArrayList de java que se llama iterator y que dentro de un while se ejecuta con la función HasNext() y dentro del encapsulamiento del while se iguala una instancia de una clase con el iterador y una función que se llama Next()... en pocas palabras son 5 líneas de código (con todo y las llaves).
La otra forma es con el for... donde tenemos un array, supongamos llamado "A" y tendremos que poner esta sentencia for(nombreClase a : A)... si bien funciona en Java, esto lo traté de ver bien como funcionaba en C# para ver si había alguna similitud.
Pues la hay! y es el foreach.
El ejemplo (la clase de ejemplo primero)
<?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Class1
{
private string nombre;
private string apellido;
private int id;
public Class1(int id, string nombre, string apellido)
{
this.nombre = nombre;
this.apellido = apellido;
this.id = id;
}
public string pr_nombre
{
get
{
return nombre;
}
set
{
nombre = value;
}
}
public string pr_apelido
{
get
{
return apellido;
}
set
{
apellido = value;
}
}
public int pr_id //Esta id, cuando veamos algo de base de datos (y que no creo que sea con C#) es para distinguir cual es cual de todas las instancias.
{
get
{
return id;
}
set
{
id = value;
}
}
}
}
>
Y la principal donde se muestra el foreach, presten atención, es MUY parecido a lo que les expliqué de java, solo cambia la sintaxis levemente:
<?
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ArrayList a = new ArrayList();
a.Add(new Class1(1, "Juan", "Paretti"));
a.Add(new Class1(2, "Miguel", "Gonzales"));
a.Add(new Class1(3, "Roberto", "Merlo"));
a.Add(new Class1(4, "Martín", "Ganzu"));
foreach (Class1 b in a) //En java esto se escribe for(Class1 b : a)
{
if (b.pr_apelido.IndexOf("Merlo") != -1)
{
Console.WriteLine("Clase encontrada: id " + b.pr_id);
Console.ReadKey();
}
}
}
}
}
>
Para el siguiente veremos con qué les amplío el manejo de ArrayList, siendo que tiene ENORMES usos, sobre todo para mapeos en bases de datos.
Saludos, Lelale.