Filtrar Dias impares e pares no calendario/ Não consigo finalizar

package br.com.morpheus;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

public class Main {

/**
 * Implementar métodos {filtraTercaPares, filtraSextaImpares}
 * usando como intervalo as seguintes datas 01/01/2016 - 31/12/2016
 * @param args
 */
public static void main(String[] args) {
	
	List<Date> pares   = filtraTercaPares(null, null); 
	List<Date> impares = filtraSextaImpares(null, null); 
	
	DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	System.out.println("****************************************");
	System.out.println("Terças pares:");
	for(Date par: pares){
		System.out.println(df.format(par));
	}
	System.out.println("****************************************");
	System.out.println("Sexta impares:");
	for(Date impar: impares){
		System.out.println(df.format(impar));
	}
	
}


/**
 * Carrega em uma lista todas as terças feiras de um determinado intevalo, em que o dia do mês seja um número par
 * @param _inicial
 * @param _final
 * @return
 */
public static List<Date> filtraTercaPares(Date _inicial, Date _final){
	//TODO IMPLEMENTAR MÉTODO
	return null;
}

/**
 * Carrega em uma lista todas as sexta feiras de um determinado intevalo, em que o dia do mês seja um número impar
 * @param _inicial
 * @param _final
 * @return
 */
public static List<Date> filtraSextaImpares(Date _inicial, Date _final){
	//TODO IMPLEMENTAR MÉTODO
	return null;
}

}

alguem pode ajudar??

Eu não usaria a classe Date, além disso está Deprecated e também não consigo usar aqui.

Vc precisa instanciar a classe Date:

Date _inicial = new Date(2016, 01 - 1, 01); // ano, mês - 1, dia
Date _final = new Date(2016, 12 - 1, 31); // ano, mês - 1, dia
List<Date> pares   = filtraTercaPares(_inicial, _final ); 
List<Date> impares = filtraSextaImpares(_inicial, _final );

Não sei como vc faria para filtras os dias, eu primeiro criaria um método que calcula o próximo dia:

Date proximoDia(Date hoje);

então no filtro ficaria mais ou menos:

void filtraTercaPares(Date _inicial, Date _final, List<Date> lista){
    if (_inicial é terça e par) lista.add(_inicial);
    if (_inicial >= _final) return; // termina
    filtraTercaPares(proximoDia(_inicial), _final, lista);
}
1 curtida

acho que estamos quase lá. Só que na parte onde vai imprimir as terça pares e sextas impares precisa de algo mais na logica

[quote=“diego12, post:3, topic:355523”]
saberia como fazer usando a class Calendar

O algoritmo que postei é recursivo, ele verifica cada um dia até o _final.

Melhor usar a classe GregorianCalendar

Calendar _inicial = new GregorianCalendar(2016, 01 - 1, 01); // ano, mês - 1, dia

https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html