2016-08-09 18 views
0

기본적으로 Java에서 문자열 모음을 반환하려고합니다. 하지만 ...Java : LinkedHashSet을 반환하십시오.

  • 가 현재 폴더에 ".DB"모든 파일 이름이기 때문에 각 캐릭터는 고유해야합니다, 그래서이 컬렉션 LinkedHashSet의이어야한다 생각했다.
  • 요소 (파일 이름)는 정확히 동일한 순서를 유지해야하므로 컬렉션의 주문 번호 중 하나를 선택할 수 있습니다.

내 메인 루틴은 사용자가 GUI 구성 요소 (아마 JList)에이 컬렉션을 표시하여 (.db 확장자없이)이 컬렉션 중 하나를 선택할 수 있도록합니다. 나는 완전히 뉴비 (당신이 볼 수 있듯이)이므로, LinkedHashSet보다 더 나은 옵션이 있다고 생각한다면 저에게 말해주십시오.

어떻게하면이 컬렉션을 기본 클래스에서 가져올 수 있습니까? 내가 지금까지있어 무엇

:

public Set GetDBFilesList() { 

    //returns ORDERED collection of UNIQUE strings with db filenames 

    LinkedHashSet a = new LinkedHashSet(); 

    FilenameFilter dbFilter = (File file, String name) -> { 
     return name.toLowerCase().endsWith(".db"); 
    }; 

    String dirPath = ""; 
    File dir = new File(dirPath); 
    File[] files = dir.listFiles(dbFilter); 

    if (files.length > 0) { 
     for (File aFile : files) { 
      a.add(aFile.getName()); 
     } 
    } 

    return a; 
} 

답변

0

당신은 주문하고 독특한 컬렉션을 원하는 - LinkedHashSet의 좋은 선택이 될 것입니다. 당신의 메도에 일부 의견 :

  • 귀하의 사용해야 제네릭 FE : LinkedHashSet<File> 또는 LinkedHashSet<String>
  • files.length에 대한 검사가 필요하지만 path이 아닌 경우 null를 확인할 수있는 directory 또는 I/O - 어쩌면 정적 헬퍼 클래스에 a
  • 귀하의 메도가 static 할 수있는 좋은 이름이 아닙니다 : 오류는 제대로 변수 이름을 지정해야
  • 을 발생?
  • Set.add 메도 returns true 또는 항목이 추가 된 경우 false 여부, 당신은 단지 모두 함께 퍼팅

경우에 그것을 확인해야합니다 : 당신의 도움에 대한

//Your Main class 
public class Main 
{ 
    public static void main(String[] args) 
    { 
     File dir = new File(""); 
     Collection<File> dbFiles = DbFileManager.getDatabaseFiles(dir); 
    } 
} 

//Your DB File Reader Logic 
public class DbFileManager 
{ 
    public static Collection<File> getDatabaseFiles(File directory) 
    { 
     Collection<File> dbFiles = new LinkedHashSet<>(); 
     //filter code etc. 
     boolean success = dbFiles.addAll(directory.listFiles(filter)); 
     //Check if everthing was added 
     return dbFiles; 
    } 
} 
+0

감사합니다. 한 가지 질문 : File 객체 컬렉션이있는 경우 JList와 같은 GUI 구성 요소의 이름을 String으로 파싱하려면 어떻게해야합니까? –

+0

문자열과 함께 콜렉션을 사용하거나 파일 오브젝트를 원하면 JList의 생성자에 전달하면됩니다. DefaultLitsModel가 작성됩니다. 항목은 File.ToString()의 가시 값을 가지며, path 또는 fileName이어야합니다. 다른 문자열, 아이콘, 스타일 등을 표시하려면 자신 만의 ListCellRenderer를 작성할 수 있습니다. – HectorLector