黑马程序员技术交流社区

标题: 遍历TreeSet集合时,高级for循环和迭代器的区别 [打印本页]

作者: lijian    时间: 2016-5-8 15:22
标题: 遍历TreeSet集合时,高级for循环和迭代器的区别
这段代码中,遍历TreeSet集合时,使用高级for循环时,流的目的文件中的内容没有按照字母顺序进行排序,而使用迭代器时,目的文件中的内容却按照字母顺序排序了,这是为什么呢?
  1. public static void main(String[] args) {
  2. //                4. 已知文件a.txt文件中的内容为“bcdeadferwplkou”,
  3. //                请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
  4. //                即b.txt中的文件内容应为“abcd…………..”这样的顺序。
  5.                 BufferedReader bur=null;
  6.                 BufferedWriter buw=null;
  7.                                 try {
  8.                                         bur=new BufferedReader(new FileReader("e:\\a.txt"));
  9.                                         buw=new BufferedWriter(new FileWriter("e:\\b.txt"));
  10.    TreeSet<Character> tree=new TreeSet<Character>();
  11.                                         String line=null;
  12.                                         while((line=bur.readLine())!=null)
  13.                                         {
  14.                                                 char[] chs=line.toCharArray();
  15.                                                 for (int x = 0; x < chs.length; x++) {
  16.                                                         tree.add(chs[x]);
  17.                                                 }
  18.                                                 for(char ch:chs)
  19.                                                 {
  20.                                                         buw.write(ch);
  21.                                                 }
  22.                                         }
  23.                                 } catch (FileNotFoundException e) {
  24.                                         e.printStackTrace();
  25.                                 } catch (IOException e) {
  26.                                         e.printStackTrace();
  27.                                 }finally
  28.                                 {
  29.                                         try {
  30.                                                 if(bur!=null)
  31.                                                         bur.close();
  32.                                         } catch (IOException e) {
  33.                                                 e.printStackTrace();
  34.                                         }
  35.                                         try {
  36.                                                 if(buw!=null)
  37.                                                         buw.close();
  38.                                         } catch (IOException e) {
  39.                                                 e.printStackTrace();
  40.                                         }
  41.                                        
  42.                                 }
  43.                                
  44.                
  45.         }
复制代码



作者: lijian    时间: 2016-5-10 17:25
自己顶一下
作者: liujian5461267    时间: 2016-5-10 18:40
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.util.ArrayList;
  9. import java.util.Comparator;
  10. import java.util.Iterator;
  11. import java.util.List;
  12. import java.util.TreeSet;

  13. public class treeset四种遍历方法 {
  14.         public static void main(String[] args) {
  15.                 // 4. 已知文件a.txt文件中的内容为“bcdeadferwplkou”,
  16.                 // 请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
  17.                 // 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
  18.                 BufferedReader bur = null;
  19.                 BufferedWriter buw = null;
  20.                 File file = new File("d:\\test\\b.txt");
  21.                 try {
  22.                         bur = new BufferedReader(new FileReader("c:\\test\\a.txt"));
  23.                         buw = new BufferedWriter(new FileWriter(file));
  24.                         TreeSet<Character> tree = new TreeSet<Character>(new Comparator<Character>() {

  25.                                 @Override
  26.                                 public int compare(Character o1, Character o2) {
  27.                                         // TODO Auto-generated method stub
  28.                                         return o2-o1;
  29.                                 }
  30.                         });
  31.                         String line = null;
  32.                         while ((line = bur.readLine()) != null) {
  33.                                 char[] chs = line.toCharArray();
  34.                                 for (int x = 0; x < chs.length; x++) {
  35.                                         tree.add(chs[x]);
  36.                                        
  37.                                 }
  38.                                
  39.                                
  40.                                
  41.                                   Iterator<Character> it = tree.iterator();
  42.                                 while (it.hasNext()) {
  43.                                     char i = (Character) it.next();
  44.                                     System.out.print(i);
  45.                                     buw.write(i);
  46.                                 }
  47.                                
  48.                                
  49.                                
  50. //                                for (Iterator<Character> iter = tree.iterator(); iter.hasNext();) {
  51. //                            char i = (Character) iter.next();
  52. //                            System.out.print(i);
  53. //                            buw.write(i);
  54. //                        }
  55.                                
  56. //                                         String string = tree.toString();
  57. //                                    System.out.print(string);
  58. //                                    buw.write(string);
  59. //                               
  60.                                
  61.                                
  62. //                                for (char ch : tree) {
  63. //                                        buw.write(ch);
  64. //                                }
  65.                         }
  66.                 } catch (FileNotFoundException e) {
  67.                         e.printStackTrace();
  68.                 } catch (IOException e) {
  69.                         e.printStackTrace();
  70.                 } finally {
  71.                         try {
  72.                                 if (bur != null)
  73.                                         bur.close();
  74.                         } catch (IOException e) {
  75.                                 e.printStackTrace();
  76.                         }
  77.                         try {
  78.                                 if (buw != null)
  79.                                         buw.close();
  80.                         } catch (IOException e) {
  81.                                 e.printStackTrace();
  82.                         }

  83.                 }

  84.         }
  85.        
  86.        
  87.        
  88.        
  89.          public static void m1(String[] args) {
  90.                 List<Integer> list = new ArrayList<Integer>();
  91.                 list.add(1);
  92.                 list.add(2);
  93.                 list.add(3);

  94.                 System.out.println("用for循环遍历");
  95.                 for (int i = 0; i < list.size(); i++) {
  96.                     System.out.println(list.get(i));
  97.                 }

  98.                 System.out.println("用增强for循环");
  99.                 for (Integer i : list) {
  100.                     System.out.println(i);
  101.                 }

  102.                 System.out.println("用iterator+while");
  103.                 Iterator<Integer> it = list.iterator();
  104.                 while (it.hasNext()) {
  105.                     int i = (Integer) it.next();
  106.                     System.out.println(i);
  107.                 }

  108.                 System.out.println("用iterator+for");
  109.                 for (Iterator<Integer> iter = list.iterator(); iter.hasNext();) {
  110.                     int i = (Integer) iter.next();
  111.                     System.out.println(i);
  112.                 }
  113.             }
  114. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2