Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - palote el de los pericos

Páginas: [1]
1
La manera que yo he encontrado para solucionar lo del punto y la coma ha sido usar el mismo booleano que devuelve el método .hasNext() como condición true o false para añadir una coma o un punto.

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;

public class CrearHashArrayTreeSet{
private List <Set> lista1;
private Set <String> lista2;
private Set <Integer> lista3;
Iterator <String> iterador1;
Iterator <Integer> iterador2;

public CrearHashArrayTreeSet(){
lista1 = new ArrayList <> ();
lista2 = new HashSet <> (Arrays.asList("luna", "sol", "saturno"));
lista3 = new TreeSet <> (Arrays.asList(2, 8, 5));
}

public void añadirListas(){
lista1.add(lista2);
lista1.add(lista3);
}

public void mostrarArrayList(){
iterador1 = lista2.iterator();
while(iterador1.hasNext()){
System.out.print("\""+iterador1.next()+"\", ");
}
String coma = ", ";
String punto =".";
iterador2 = lista3.iterator();
while(iterador2.hasNext()){
System.out.print(iterador2.next());
if(iterador2.hasNext()){
System.out.print(coma);
}else{
System.out.print(punto);
}
}
}

}

Código: [Seleccionar]
public class TestCrearHashArrayTreeSet{
public static void main(String [] args){
CrearHashArrayTreeSet objmain = new CrearHashArrayTreeSet();
objmain.añadirListas();
objmain.mostrarArrayList();
}
}

2
Hola de nuevo. Lo primero daros las gracias por contestar y por los consejos. Sí que es verdad, toni, que había pensado en modificar la clase para crear los objetos en una sola línea, a ver si puedo mañana que he estado muy liado y no he podido.

Muchas gracias por el consejo sobre las clases internas, ogramar. Había visto que se usan para la creación de listas enlazadas "a pelo", haciendo el código a mano. Lo que no sabía es lo del tema de usarlas sólo cuando las usen en exclusiva las clases envolventes y claro, los objetos CantanteFamoso deben de poder usarse en cualquier parte.

Me alegra saber que aunque me queda mucho por aprender, voy haciendo las cosas medianamente bien y por supuesto que nos seguiremos viendo por aquí por el foro.
A ver si mañana tengo un poco de tiempo y me pongo a hacer experimentos con multimap y con algo que llaman "aggregate operations", espero que el ordenador no explote  ;D

Un saludo.

3
Me respondo a mí mismo con la solución. He añadido dos maneras de hacerlo. Agradecería que algún experto me dijera que tal le parece el código (buenas prácticas, eficiencia, etc..)

Código: [Seleccionar]
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantesFamosos{
private ArrayList <CantanteFamoso> listaCantantes;
Scanner scan;
Iterator <CantanteFamoso> iterador;

class CantanteFamoso{
String nombre;
String discoSuperventas;


public String getNombre(){
return nombre;
}

public String getDiscoSuperventas(){
return discoSuperventas;
}

}

CantanteFamoso nuevoCantante;

ListaCantantesFamosos(){
listaCantantes = new ArrayList<>();
scan = new Scanner(System.in);
}

public void añadirCantantes(String nombre, String discoSuperventas){
nuevoCantante = new CantanteFamoso();
nuevoCantante.nombre = nombre;
nuevoCantante.discoSuperventas = discoSuperventas;
listaCantantes.add(nuevoCantante);
}

public void mostrarLista1(){
for(CantanteFamoso nombres : listaCantantes){
System.out.print(nombres.nombre+ " - ");
System.out.println(nombres.discoSuperventas);
}
}

public void mostrarLista2(){
iterador = listaCantantes.iterator();
while(iterador.hasNext()){
CantanteFamoso cantante = iterador.next();
System.out.println(cantante.nombre+" - "+cantante.discoSuperventas);
}
}

public void mostrarLista3(){
iterador = listaCantantes.iterator();
while(iterador.hasNext()){
CantanteFamoso cantante = iterador.next();
System.out.println(cantante.getNombre()+" - "+cantante.getDiscoSuperventas());
}
}

public void añadirCantantes(){
String aux1 = "";
do{
String aux2 = "";
System.out.println("¿Desea añadir otro nombre? (s/n)");
aux2 = scan.nextLine();
aux1 = aux2;
if(aux2.equalsIgnoreCase("s")){
nuevoCantante = new CantanteFamoso();
System.out.println("Introduzca el nombre del cantante: ");
nuevoCantante.nombre = scan.nextLine();
System.out.println("Introduzca el nombre de su disco más vendido: ");
nuevoCantante.discoSuperventas = scan.nextLine();
listaCantantes.add(nuevoCantante);
}
}while("s".equalsIgnoreCase(aux1));
for(CantanteFamoso nombres : listaCantantes){
System.out.print(nombres.nombre+ " - ");
System.out.println(nombres.discoSuperventas);
}
}

}

4
El código me funciona, aunque no sé si es el más adecuado, además, he tenido que usar un bucle for-each para obtener los atributos de los objetos porque no sabía cómo hacerlo con Iterator.
Código: [Seleccionar]
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;

public class ListaCantantesFamosos{
private ArrayList <CantanteFamoso> listaCantantes;
Scanner scan;
Iterator <CantanteFamoso> iterador;

class CantanteFamoso{
String nombre;
String discoSuperventas;
}

CantanteFamoso nuevoCantante;

ListaCantantesFamosos(){
listaCantantes = new ArrayList<>();
scan = new Scanner(System.in);
}

public void añadirCantantes(String nombre, String discoSuperventas){
nuevoCantante = new CantanteFamoso();
nuevoCantante.nombre = nombre;
nuevoCantante.discoSuperventas = discoSuperventas;
listaCantantes.add(nuevoCantante);
}

public void mostrarLista2(){
for(CantanteFamoso nombres : listaCantantes){
System.out.print(nombres.nombre+ " - ");
System.out.println(nombres.discoSuperventas);
}
}

public void mostrarLista(){
iterador = listaCantantes.iterator();
while(iterador.hasNext()){
System.out.println(iterador.next());
}
}

public void añadirCantantes(){
String aux1 = "";
do{
String aux2 = "";
System.out.println("¿Desea añadir otro nombre? (s/n)");
aux2 = scan.nextLine();
aux1 = aux2;
if(aux2.equalsIgnoreCase("s")){
nuevoCantante = new CantanteFamoso();
System.out.println("Introduzca el nombre del cantante: ");
nuevoCantante.nombre = scan.nextLine();
System.out.println("Introduzca el nombre de su disco más vendido: ");
nuevoCantante.discoSuperventas = scan.nextLine();
listaCantantes.add(nuevoCantante);
}
}while("s".equalsIgnoreCase(aux1));
for(CantanteFamoso nombres : listaCantantes){
System.out.print(nombres.nombre+ " - ");
System.out.println(nombres.discoSuperventas);
}
}

Código: [Seleccionar]
public class TestListaCantantesFamosos{
public static void main(String[]args){
ListaCantantesFamosos objmain = new ListaCantantesFamosos();
objmain.añadirCantantes("Sabina", "No me acuerdo");
objmain.añadirCantantes("Sabrina", "El que sea");
objmain.mostrarLista2();
objmain.añadirCantantes();
}
}

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".