黑马程序员技术交流社区
标题:
遍历TreeSet集合时,高级for循环和迭代器的区别
[打印本页]
作者:
lijian
时间:
2016-5-8 15:22
标题:
遍历TreeSet集合时,高级for循环和迭代器的区别
这段代码中,遍历TreeSet集合时,使用高级for循环时,流的目的文件中的内容没有按照字母顺序进行排序,而使用迭代器时,目的文件中的内容却按照字母顺序排序了,这是为什么呢?
public static void main(String[] args) {
// 4. 已知文件a.txt文件中的内容为“bcdeadferwplkou”,
// 请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
// 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
BufferedReader bur=null;
BufferedWriter buw=null;
try {
bur=new BufferedReader(new FileReader("e:\\a.txt"));
buw=new BufferedWriter(new FileWriter("e:\\b.txt"));
TreeSet<Character> tree=new TreeSet<Character>();
String line=null;
while((line=bur.readLine())!=null)
{
char[] chs=line.toCharArray();
for (int x = 0; x < chs.length; x++) {
tree.add(chs[x]);
}
for(char ch:chs)
{
buw.write(ch);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally
{
try {
if(bur!=null)
bur.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(buw!=null)
buw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
作者:
lijian
时间:
2016-5-10 17:25
自己顶一下
作者:
liujian5461267
时间:
2016-5-10 18:40
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
public class treeset四种遍历方法 {
public static void main(String[] args) {
// 4. 已知文件a.txt文件中的内容为“bcdeadferwplkou”,
// 请编写程序读取该文件内容,并按照自然顺序排序后输出到b.txt文件中。
// 即b.txt中的文件内容应为“abcd…………..”这样的顺序。
BufferedReader bur = null;
BufferedWriter buw = null;
File file = new File("d:\\test\\b.txt");
try {
bur = new BufferedReader(new FileReader("c:\\test\\a.txt"));
buw = new BufferedWriter(new FileWriter(file));
TreeSet<Character> tree = new TreeSet<Character>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
// TODO Auto-generated method stub
return o2-o1;
}
});
String line = null;
while ((line = bur.readLine()) != null) {
char[] chs = line.toCharArray();
for (int x = 0; x < chs.length; x++) {
tree.add(chs[x]);
}
Iterator<Character> it = tree.iterator();
while (it.hasNext()) {
char i = (Character) it.next();
System.out.print(i);
buw.write(i);
}
// for (Iterator<Character> iter = tree.iterator(); iter.hasNext();) {
// char i = (Character) iter.next();
// System.out.print(i);
// buw.write(i);
// }
// String string = tree.toString();
// System.out.print(string);
// buw.write(string);
//
// for (char ch : tree) {
// buw.write(ch);
// }
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bur != null)
bur.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (buw != null)
buw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void m1(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
System.out.println("用for循环遍历");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("用增强for循环");
for (Integer i : list) {
System.out.println(i);
}
System.out.println("用iterator+while");
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
int i = (Integer) it.next();
System.out.println(i);
}
System.out.println("用iterator+for");
for (Iterator<Integer> iter = list.iterator(); iter.hasNext();) {
int i = (Integer) iter.next();
System.out.println(i);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2