public List<Mp3Info> getMp3Files(String path) {
File file = new File(SDCardRoot + File.separator + path);
List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
Mp3Info mp3Info = new Mp3Info();
File[] f = file.listFiles();
for (int i = 0; i < f.length; i++) {
if (f[i].getName().endsWith("mp3")) {
mp3Info.setMp3Name(f[i].getName());
mp3Info.setMp3Size(f[i].length() + "");
System.out.println(mp3Info);
mp3Infos.add(mp3Info);
}
}
System.out.println(mp3Infos);
return mp3Infos;
}
/**
* 读取一个文件夹内mp3文件及文件大小 *
*/
public List<Mp3Info> getMp3Files(String path) {
File file = new File(SDCardRoot + File.separator + path);
List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
File[] f = file.listFiles();
for (int i = 0; i < f.length; i++) {
if (f[i].getName().endsWith("mp3")) {
Mp3Info mp3Info = new Mp3Info();
mp3Info.setMp3Name(f[i].getName());
mp3Info.setMp3Size(f[i].length() + "");
System.out.println(mp3Info);
mp3Infos.add(mp3Info);
}
}
System.out.println(mp3Infos);
return mp3Infos;
}上面两个函数,当Mp3Info mp3Info = new Mp3Info();这条语句放的位置不同时,第一条打印语句相同,第二条打印语句不同。第一个函数的第二条打印语句没有得到预期的结果,也就是记录没有添加进去。为什么?
解决方案 »
- 关于Interface Iterator<E> 和 HashSet
- struts数据返回的问题!
- 一个简单小程序,setSelectionStart
- 有关java的Comparator接口问题
- 如果在application里面实现声音提示
- 为什么我的JDK1。5突然用不了
- 简单问题2:一个类extends Serializable和implements Serializable有什么区别?
- 有关public class的菜鸟问题50分相赠
- 急,求帮助
- public class welcom1{ 与 class welcom1{ 有什么区别
- 求这道题该怎么解?求各位大神给个详细思路
- 最新的jdk jre 1.7.0 和最新的 mac osx 10.8.3的环境变量配置问题
对象在for循环外面创建的,for循环里面操作的是同一个Mp3Info对象,所以第一个函数的第二条打印语句,应该list里面只有一条数据。第二个函数,对象在for循环里面创建的,每一次循环都新建一个对象,然后将这个对象加入到list中第二个才是正确的
而mp3Infos是一个报名表
每次setMp3Name是去派出所改名字,setMp3Size是身高变高了。
即使你每次改完名字之后,再去报一次名(add),最后,点名的时候,报名表中所有人的最新状态必然是一样的。
你把Mp3Info mp3Info = new Mp3Info();放到外面取每次都是指定的一个对象,当然只有一条了
2.Mp3Info mp3Info = new Mp3Info();写在循环里面的话,他每次循环会重新new一个对象出来,存放在集合中,所以每次得到的结果就是你想要的!!