Ajuda com intervalos

Tenho intervalos de horas e quero juntar se possivel.
Exemplo:
Intervalos iniciais: “12:45 a 14:55”,“15:55 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”.
Vou adicionar um intervalo: “13:15 a 16:55”.
Intervalos finais: “12:45 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”

Tambem preciso remover, quebrando se necessario
exemplo:
Intervalos iniciais: “12:45 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”
Vou remover um intervalo: “13:15 a 16:55”.
Intervalos finais: “12:45 a 13:15”,“16:55 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”.

e verificar se tao intervalo esta na lista
exemplo:
Intervalos iniciais: “12:45 a 18:25”,“22:30 a 00:15”, “05:30 a 07:30”
Vou verificar um intervalo: “13:15 a 16:55”.
return true

desculpa, mas minha bola de cristal quebrou.

ou vc explica melhor ou muitas pessoas não entenderão seu problema

Você precisa basicamente:

  • Um objeto intervalo, que tenham uma hora de inicio e uma hora de fim:
    • Método para remorer intervalo
    • Método para verificar se intervalo recebido está contido no intervalo atual
  • Uma lista de intervalos

Para abstrair as horas vc pode utilizar o objeto java.util.Calendar. Ou seja você vai ter uma lista de objetos Intervalo e cada objeto Intervalo terá dois objetos Calendar e os métodos necessários.

[quote=rafaelviny]desculpa, mas minha bola de cristal quebrou.

ou vc explica melhor ou muitas pessoas não entenderão seu problema[/quote]

Um exemplo melhor:
Vc trabalha numa empresa cuja a carga seja de 8h por dia

Vc pode escolher os horarios de entrada e saida
por exemplo vvc escolheu das 7:00 as 15:00h.

Mas ai vc decobriu q podia inserir um horario para cafezinho
entao removeu 8:30 as 8:45
ai ficou 7:00 as 8:30 e das 8:45 as 15:00

percebeu q ai n cumpre a carga horaria entao teve q adicionar da 15:00 as 15:15
ai ficou 7:00 as 8:30 e das 8:45 as 15:15

vc axou muito ruim esse horario e decidiu q das 12:15 as 18:00 n poderia trabalhar
ai ficou das 7:00 as 8:30 e 8:45 a 12:15

bom ai n cumpre o horario resolveu adicionar das 18:00 as 21:00h
ai ficou 7:00 as 8:30, 8:45 a 12:15, 18:00 as 21:00

e assim por diante

melhorou?

[quote=francislon]Você precisa basicamente:

  • Um objeto intervalo, que tenham uma hora de inicio e uma hora de fim:
    • Método para remorer intervalo
    • Método para verificar se intervalo recebido está contido no intervalo atual
  • Uma lista de intervalos

Para abstrair as horas vc pode utilizar o objeto java.util.Calendar. Ou seja você vai ter uma lista de objetos Intervalo e cada objeto Intervalo terá dois objetos Calendar e os métodos necessários.[/quote]

A classe calendar é uma classe abstrata ou interface que utiliza dia, mes e ano, na minha aplicaçao so tem horas, poderia me explicar como poderia utilizar para adicionar, remover e verificar na lista?

o objeto intervalo ja tinha feito
uma lista de intervalos tambem, é aki q estou com problemas, COMO adicionar, remover e verificar

[quote]ChronosSage wrote:
A classe calendar é uma classe abstrata ou interface que utiliza dia, mes e ano[/quote]

Dê uma lida na especificação da classe Calendar, ela trabalha com horas sim: http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html
Você pode estar trabalhando com GregorianCalendar: http://download.oracle.com/javase/1.4.2/docs/api/java/util/GregorianCalendar.html

Em relação à lista você pode estar trabalhando com alguma implementação da interface java.util.List: http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html
A interface List provê métodos para manipular sua lista.

[quote=francislon][quote]ChronosSage wrote:
A classe calendar é uma classe abstrata ou interface que utiliza dia, mes e ano[/quote]

Dê uma lida na especificação da classe Calendar, ela trabalha com horas sim: http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html
Você pode estar trabalhando com GregorianCalendar: http://download.oracle.com/javase/1.4.2/docs/api/java/util/GregorianCalendar.html

Em relação à lista você pode estar trabalhando com alguma implementação da interface java.util.List: http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html
A interface List provê métodos para manipular sua lista.

[/quote]

Ja conheço essas classes, para eu fazer isso seria necessario seta um dia e hora para cada intervalo, mas ai tem o problema de começar em um dia e terminar no outro, exemplo das 21:00 as 05:00h e adicionar das 01:00 as 07:00, o calendar n poderia judar nesse caso pois n ha dia de referencia, o resultado teria q ser 21:00 as 07:00, portanto a adicao teria q ser a mao

Consegui resolver o problema mas n é o ideal

O intevalo é convertido em minutos
na lista criei um array de boolean com tamanho 1440(qtd de minutos em um dia)
para adicionar so setar true nas posiçoe e remover setar false
depois converter o array para horas(String) novamente para exibiçao

VLW pela ajuda

Use o Joda-Time: http://joda-time.sourceforge.net/

Em especial a classe Period.

[quote=ViniGodoy]Use o Joda-Time: http://joda-time.sourceforge.net/

Em especial a classe Period.[/quote]

Isso n ajudou, pois a classe Period guarda um certo tempo de duraçao, entao eu teria q usar uma classe como a classe Instant, mas a classe Instant usa dias meses e ano, alem disso n permite que eu remova um periodo dentro de outro periodo, se eu somar Periods, soma igual na matematica(02:00 + 03:00 = 05:00)
e oq eu quero é:
“00:00 a 02:00” + “00:00 a 03:00” = “00:00 a 03:00”
“00:00 a 02:00” + “03:00 a 05:00” = “00:00 a 02:00” ou “03:00 a 05:00”
“03:00 a 07:00” - “04:00 a 05:00” = “03:00 a 04:00” ou “05:00 a 07:00”

Note que se eu passar para o meu sistema “01:30”, n importa o dia, é sempre “01:30”, como uma fila circular de 00:00 a 23:59 horas

Se o Joda-Time pode resolver o meu problema, poderia me dizer como? Pois n encontrei

meu maior problema é quando passa de meia noite, ou seja posso remover das “23:50 as 04:50” ou adicionar “22:00 as 01:00” e o sistema tem q considerar q “nao passou o dia”, ou seja os horarios sempre fazem parte do mesmo dia como uma fila circular