cami-la / curso-dio-intro-collections

Resolução dos exercícios propostos: CURSO INTRODUTÓRIO COLLECTIONS FRAMEWORK JAVA.
https://web.digitalinnovation.one/home
602 stars 213 forks source link

Exercício 1 - Collections #17

Closed daianeoliver closed 2 years ago

daianeoliver commented 2 years ago

Oi Camila, tudo bem? estou fazendo o exercício 1 da aula de collections, e me bateu uma dúvida quando utilizo classe para criar o arraylist, eu consigo trocar a string do mes: "1" para mes: "janeiro" utilizando o camparator? Se puder me dar uma luz agradeço muito!

public class Temperatura { public static void main(String[] args){ List tempo = new ArrayList<>(){{ add(new ListaTempo("1",12.0)); add(new ListaTempo("2",23.0)); add(new ListaTempo("3",3.0)); add(new ListaTempo("4",21.0)); add(new ListaTempo("5",10.0)); add(new ListaTempo("6",30.0)); }}; System.out.println("Temperaturas 6 primeiros meses: " + tempo);

    //Somar temperaturas e fazer média dos 6 meses
    System.out.print("Média das temperaturas dos últimos 6 meses: ");
    Iterator<ListaTempo> iterator = tempo.iterator();
    Double soma = 0d;
    while(iterator.hasNext()){
        Double next = iterator.next().getTemperatura();
        soma += next;
    }
    Double media = soma / tempo.size();
    System.out.print(media);

    //Mostra temperaturas acima da média
    System.out.println("\nTemperaturas acima da média " + media + " são: " );
    Iterator<ListaTempo> iterator1 = tempo.iterator();
    while(iterator1.hasNext()){
        Double next = iterator1.next().getTemperatura();
        if(next < media) iterator1.remove();
    }
    System.out.println(tempo);

    //Mostrar Meses por extenso em que temperaturas ocorreram
    gostaria de fazer aqui uma troca de mês 1 para janeiro...mas não sei se da forma que optei por fazer o exercício, é possível...

}

}

cami-la commented 2 years ago

Oi, @daianeoliver. Tudo bem? Primeiramente parabéns pelo empenho nos estudos, viu? Estamos indo muito bem!!

Vamos lá:

  1. A forma que você iniciou uma estrutura List, "não está correta", tá? Precisamos dizer qual o tipo de dados essa List irá receber, por exemplo:
List<Double> tempo = new ArrayList<Double>();
//ou
List<Double> tempo = new ArrayList<>();
  1. No seu exemplo acima, você está inserindo várias listas dentro de uma lista. Isso sim, é possível. Porém essas listas que você está tentando adicionar dentro da lista tempo, têm 2 tipos de dados. Por exemplo: add(new ListaTempo("1",12.0)); String ("1") e Double (12.0).
    public class Temperatura {
    public static void main(String[] args){
    List tempo = new ArrayList<>(){{
      add(new ListaTempo("1",12.0));
      add(new ListaTempo("2",23.0));
      add(new ListaTempo("3",3.0));
      add(new ListaTempo("4",21.0));
      add(new ListaTempo("5",10.0));
      add(new ListaTempo("6",30.0));
    }};
    System.out.println("Temperaturas 6 primeiros meses: " + tempo);
    }
    }
  2. E uma estrtura de dados List, nós não podemos ter mais de um tipo de elemento dentro dela. Beleza?
  3. Quando nós queremos representar um elemento "chave e valor", temos o Map. Vou te mostrar um exemplo aqui:
    Map<String, Double> tempo = new HashMap<>() {{
    put("1",12.0);
    put("2",23.0);
    put("3",3.0);
    put("4",21.0);
    put("5",10.0);
    put("6",30.0);
    }};
    System.out.println("Temperaturas 6 primeiros meses: " + tempo);

    mape

Essa parte de Map, vemos com bastante detalhe na parte final do nosso curso! Tanto Map quanto Stream API. (:

Veja se consegui te ajudar. Se ainda não expliquei bem, me diz que explico melhor!

daianeoliver commented 2 years ago

Ola Camila! Agradeço o retorno!

Desculpe eu esqueci completamente do detalhe dos tipos de variáveis no list! :( Deu para entender sim o que passou, muito obrigada! Vou me atentar mais a esses detalhes nas próximas. ;)