java-list去除重複的對象

/**
  * @param file
  * @return
  * 得到該文件夾下所有文件夾名稱數組
  */
 public static String[] getDirName(File file)
 {
  List<String> strList = new ArrayList<String>();

  if(file.isDirectory())
  {
   File[] arrFile =file.listFiles();
   if(arrFile.length>0 && null!=arrFile)
   {
    for (File subFile : arrFile) {
     if(subFile.isDirectory())
     {
      strList.add(subFile.getName());
     }else
     {
      strList.add(subFile.getParentFile().getName());
     }
    }
   }
  }else
  {
   //當一個文件爲一類時得到該文件的文件名稱
   String fileName =file.getName();
   int index =fileName.lastIndexOf(".");
   fileName=fileName.substring(0, index);
   strList.add(fileName);
  }
 

  //去重方法一
  /*List<String> list = new ArrayList<String>();
 
  for (String str : strList) {
   if(! list.contains(str))
   {
    list.add(str);
   }
  }*/


  //去重方法二
  /*List<String> list = new ArrayList<String>();
  Iterator<String> it = strList.iterator();
 
  while(it.hasNext())
  {
   String strVal=it.next();
   if(list.contains(strVal))
   {
    it.remove();
   }else
   {
    list.add(strVal);
   }
  
  }*/
 

  //去重方法三
 /* for(int i=0;i<strList.size()-1;i++)
  {
   for(int j=strList.size()-1;j>i;j--)
   {
    if(strList.get(i).equals(strList.get(j)))
    {
     strList.remove(j);
    }
   }
  }*/
 

  //去重方法四
 /* Set<Article> artSet = new HashSet<Article>();
  artSet.addAll(new ArrayList(strList));
  return artSet.toArray(new String[]{});*/
 

  //去重方法五
  /*HashSet<String> set = new HashSet<String>(strList);
  strList.clear();
  strList.addAll(set);*/
 

  //去重方法六   -------保持原來的順序
  Set<String> set = new HashSet<String>();
  List<String> list = new ArrayList<String>();
 
  for (Iterator<String> it = strList.iterator();it.hasNext();)
  {
   String strVal =it.next();
   if(set.add(strVal))
   {
    list.add(strVal);
   }
   
  }
  strList.clear();
  strList.addAll(list);
 
  return strList.toArray(new String[]{});
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章