Ahoj, jsem začátečník v Javě a potřeboval bych poradit. Chci si udělat takového souborového komandera a vymýšlím třídu, která mi bude třídit soubory. Ale narazil jsem na kámen úrazu, protože všude se popisují třídící funkce jen k ArrayListu. A ten tam samozřejmě nemám.
ten můj prográmek:
package filemanager;
import java.util.*;
import java.io.File;
import java.util.Date;
import java.text.SimpleDateFormat;
public class S_seznam {
Map<String, soubor> kon;
public S_seznam() {
kon = new HashMap<String, soubor>();
}
private class soubor {
private String nazev;
private long datum;
private String datum_upr;
private long velikost;
// private int systemovy;
private int pro_cteni;
private int skryty;
// private int archivni;
// private int spustitelny;
private int adresar;
// Konstruktory
public soubor(){}
public soubor(String nazev) {this.nazev = nazev;}
public soubor(String nazev, long datum) {this.nazev=nazev; this.datum = datum;}
public soubor(String nazev, long datum, long velikost) {this.nazev=nazev; this.datum = datum; this.velikost = velikost;}
// public soubor(String nazev, long datum, long velikost, int systemovy) {this.nazev=nazev; this.datum = datum; this.velikost = velikost; this.systemovy = systemovy;}
// public soubor(String nazev, long datum, long velikost, int systemovy, int pro_cteni) {this.nazev=nazev; this.datum = datum; this.velikost = velikost; this.systemovy = systemovy; this.pro_cteni = pro_cteni;}
// public soubor(String nazev, long datum, long velikost, int systemovy, int pro_cteni, int skryty) {this.nazev=nazev; this.datum = datum; this.velikost = velikost; this.systemovy = systemovy; this.pro_cteni = pro_cteni; this.skryty = skryty;}
// public soubor(String nazev, long datum, long velikost, int systemovy, int pro_cteni, int skryty, int archivni) {this.nazev=nazev; this.datum = datum; this.velikost = velikost; this.systemovy = systemovy; this.pro_cteni = pro_cteni; this.skryty = skryty; this.archivni = archivni;}
// public soubor(String nazev, long datum, long velikost, int systemovy, int pro_cteni, int skryty, int archivni, int spustitelny) {this.nazev=nazev; this.datum = datum; this.velikost = velikost; this.systemovy = systemovy; this.pro_cteni = pro_cteni; this.skryty = skryty; this.archivni = archivni; this.spustitelny=spustitelny;}
// Nastavitelne vlastnosti
public void set_nazev(String nazev) {this.nazev = nazev;}
public void set_datum(long datum) {this.datum = datum;}
public void set_velikost(long velikost) {this.velikost = velikost;}
// public void set_systemovy(int stav) {this.systemovy = stav;}
public void set_pro_cteni(int stav) {this.pro_cteni = stav;}
public void set_skryty(int stav) {this.skryty = stav;}
// public void set_archivni(int stav) {this.archivni = stav;}
// public void set_spustitelny(int stav) {this.spustitelny = stav;}
public void set_datum_upr(String udatum) {this.datum_upr = udatum;};
public void set_adresar(int stav) {this.adresar = stav;}
// Vlastnosti ktere jdou cist
public String get_nazev() {return this.nazev;}
public long get_datum() {return this.datum;}
public long get_velikost() {return this.velikost;}
// public int get_systemovy() {return this.systemovy;}
public int get_pro_cteni() {return this.pro_cteni;}
public int get_skryty() {return this.skryty;}
// public int get_archivni() {return this.archivni;}
// public int get_spustitelny() {return this.spustitelny;}
public String get_datum_upr() {return this.datum_upr;}
public int get_adresar() {return this.adresar;}
public int exist() {
File f = new File(this.nazev);
if (f.exists()) {
return 1;
}
return 0;
}
public int refresh_attr() {
if (this.exist()==1) {
File t_file = new File(this.get_nazev());
// velikost souboru
this.velikost = t_file.length();
// datum
this.datum = t_file.lastModified();
Date dat_tmp = new Date(this.datum);
SimpleDateFormat dat = new SimpleDateFormat();
dat.applyPattern("dd.MM.yyyy-H:mm:ss");
this.datum_upr = dat.format(dat_tmp);
// je soubor skryty?
if (t_file.isHidden()==true) {this.skryty = 1;}
// je soubor adresar?
if (t_file.isDirectory()==true) {this.adresar = 1;}
// pokud je read-only
if (t_file.canWrite()==false) {this.pro_cteni = 1;}
// spustitelny
// if (t_file.canExecute()==true) {this.spustitelny = 1;}
}
return 0;
}
}
public int add(String cesta) {
soubor mujsoubor = new soubor(cesta);
if (mujsoubor.exist()==0) {return 0;}
kon.put(mujsoubor.get_nazev(), mujsoubor);
return 1;
}
public int exist(String nazev) {
//soubor mujsoubor = new soubor(nazev);
if (kon.containsKey(nazev)==true) {
return 1;
}else {
return 0;}
}
public int remove(String nazev){
if (this.exist(nazev)==1) {
if (kon.remove(nazev)!=null) {
return 1;
}
}
return 0;
}
public void refresh_attr() {
Iterator it = kon.keySet().iterator();
soubor t_soubor = new soubor();
while(it.hasNext()){
t_soubor = kon.get(it.next());
t_soubor.refresh_attr();
}
}
public void vypis() {
Iterator it = kon.keySet().iterator();
String jmeno;
while(it.hasNext()){
jmeno = (String)it.next();
System.out.print(jmeno+" ");
if (kon.get(jmeno).get_skryty()==1) {System.out.print("-H");}
if (kon.get(jmeno).get_pro_cteni()==1) {System.out.print("-R");}
// if (kon.get(jmeno).get_spustitelny()==1) {System.out.print("-E");}
System.out.print("\n");
}
}
public void test() {
}
}
promena kon je tedy deklarovana jako Hashmapa a ukladam do ni objekt soubor, ktery ma ruzne vlastnosti (get_velikost, get_datum pod). Jenze kdyz tech chci napr vsechny objekty vlozene v promene kon seradit podle vlastnosti soubor.get_velikost jak to mam udelat? Cetl jsem ze existuje nejaka trida Comparable ale nechapu jak bych si ji mel upravit k tomu aby delala to co potrebuju.
Ma nekdo nejaky napad prosim?