Boa noite caro colegas, estou mais uma vez precisando de uma forcinha de vcs estou carregando um ArrayList com os dados de um diretório gostaria de carregar neste List apenas os 10 ultimo arquivo, infelizmente não tenho nenhuma ideia de como fazer esse procedimento. Deste já agradeço a colaboração e compreensão de todos. um abraço
Supondo que você já sabe pegar os dados do diretório e que seu problema é só limitar o ArrayList a 10 elementos, você poderia fazer algo como:
ArrayList lista;
(…)
// antes de adicionar elemento, verifica se já tem 10. Se tiver, remove o primeiro
if (lista.size() == 10)
lista.remove(0);
lista.add(…); troque … pelo elemento a ser adicionado
(…)[/code]
Se quiser, pode ir um pouco além e estender a classe ArrayList, sobrescrevendo o método add();
[code]
public class MinhaLista extends ArrayList{
@Override
public void add(){ // Obs: colocar a assinatura correta do método add()
if (this.size() == 10)
super.remove(0);
super.add(…); troque … pelo elemento a ser adicionado
}
}[/code]
Abraço.
Boa tarde TerraSkilll, esse é o método q estou usando para preencher a lista, então o q eu preciso é pegar os 10 últimos registro e preencher a lista para assim adicionar na jtable , vou ver se consigo resolver esse problema com a dica q vc me passou muito obrigado por sua atenção.
public static List<Backup> listaArquivo(File raiz) {
List<Backup> backup = new ArrayList<>();
File[] lista = raiz.listFiles();
for (File f : lista) {
if (f.isFile()) {
Backup bc = new Backup();
bc.setDataHora(Ulti.dtHora.format(f.lastModified()));
bc.setBac_tamanho(String.valueOf(f.length()));
bc.setBac_destino(f.getPath());
backup.add(bc);
}
}
return backup;
}
e aqui eu jogo na jtable
private void carregarTabela() {
File raiz = new File("C:\\sisimo\\backup");
listBackup = listaArquivo(raiz);
tbBackup.setModel(new MyTableModel(Bean.Backup.class, listBackup, tbBackup));
configuracaoTabela();
}
Você precisa ordenar os arquivos pela última data nesse caso:
Ordering<File> ordenacao = Ordering.from( new Comparator(){
public int compare(File f1, File f2)
{
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
});
List<File> max10 = ordenacao.greatestOf(Arrays.asList(lista.listFiles()), 10);
Apenas copiei o trecho de código desse tópico
Solução para Exibir os 10 ultimos registro de List
private void carregarTabela10() {
File raiz = new File("C:\\sisimo\\backup");
listBackup = listaArquivo(raiz);
List<Backup> listaPrincipal = this.listBackup;
List<Backup> novaLista = new ArrayList<>();
if (listaPrincipal != null && listaPrincipal.size() >= 10) {
novaLista = listaPrincipal.subList(listaPrincipal.size() - 11, listaPrincipal.size() - 1); //aqui é onde filtra os 10 registros
tbBackup.setModel(new MyTableModel(Bean.Backup.class, novaLista, tbBackup));
} else {
tbBackup.setModel(new MyTableModel(Bean.Backup.class, listaPrincipal, tbBackup));
}
configuracaoTabela();
}
Obrigado a todos pela colaboração e principalmente a Fernando Generoso onde faz justo o seu sobre nome