2013-05-09 53 views
3

的一个ArrayList中我有两个ArrayList,我想加入他们做出一个ArrayList,两个列表具有相同的大小添加两个ArrayList中,以包含HashMap

我会做这种方式。

这是优化还是我可以使它更好,更高效,当名单变大?

private ArrayList<Bitmap> imageFile= new ArrayList<Bitmap>(); 

    imageFile.add(xy); 
    imageFile.add(ab); 
    imageFile.add(cd); 

    private ArrayList<MediaPlayer> musicFile= new ArrayList<MediaPlayer>(); 

    musicFile.add(mm); 
    musicFile.add(nn); 
    musicFile.add(ll); 

    private HashMap<Bitmap, MediaPlayer> mappedFiles= new HashMap<Bitmap, MediaPlayer>(); 

    mappedFiles.put(imageFile.get(i),musicFile.get(i)) 


    private ArrayList<HashMap<Bitmap, MediaPlayer>> imageMusic= new ArrayList<HashMap<Bitmap, MediaPlayer>>(); 

    imageMusic.add(mappedFiles); 
+0

“优化”取决于你所需要的。有重复吗?两个列表中的条目相同?你想摆脱它们吗?订单是否重要? – CPerkins 2013-05-09 12:18:30

+0

@Makky我想从两个相同大小的不同阵列列表中制作hashmaps的阵列列表。 – Prateek 2013-05-09 12:22:14

+0

为什么使用HashMap的ArrayList?是否还有其他HashMaps将在以后添加到ArrayList中? – 2013-05-09 12:23:52

回答

1

基于您的评论,你不想地图可言,你想要类和列表:

public class Track { 
    private final String name; 
    private final MediaPlayer music; 
    public Track (String name, MediaPlayer music) { 
     this.name = name; 
     this.music = music; 
    } 
    // getters omitted 
} 

public class CD { 
    private final String name; 
    private final BitMap image; 
    private final List<Track> tracks = new ArrayList<Track>(); 
    public CD (String name, BitMap image) { 
     this.name = name; 
     this.image = image; 
    } 
    public List<Track> getTracks() { 
     return tracks; 
    } 
    // other getters omitted 
} 

然后

List<CD> cds = new List<CD>(); 
CD cd = new CD("Thriller", someBitMap); 
cd.getTracks().add(new Track("I'm bad", someMusic)); 
cds.add(cd); 
+0

,但我的方法会产生多大的复杂性。 – Prateek 2013-05-10 06:41:42

+0

那么作为程序员要弄清楚发生了什么,对你来说会更困难。这会导致错误和/或沮丧。让事情保持有序并且有条不紊,你会保持理智并为你建立软件。这种方法还可以让你轻松地添加更多的属性,如曲目长度,曲目风格,CD风格等等,你的方法会很快成为一个混乱恕我直言 – Bohemian 2013-05-10 06:56:10

0

尝试这种方式

public static void main(String[] args) { 
     ArrayList<String> imageFile = new ArrayList<String>(); 

     imageFile.add("XY"); 
     imageFile.add("ZZ"); 
     imageFile.add("YY"); 

     ArrayList<Integer> musicFile = new ArrayList<Integer>(); 

     musicFile.add(1); 
     musicFile.add(2); 
     musicFile.add(4); 

     Map<List<String>, List<Integer>> fullMap = new HashMap<List<String>, List<Integer>>(); 
     fullMap.put(imageFile, musicFile); 

    } 
} 
0

如果你真的需要一个结构(我不明白这是怎么回事与上次ArrayList),那么我认为这是相当优化。

你没有办法轻松地创建一个映射出两个列表,所以你必须要通过他们循环,因为这些数组列表,一个很简单的for将是相当明确的:

private HashMap<Bitmap, MediaPlayer> mappedFiles= new HashMap<Bitmap, MediaPlayer>(); 
for(int i=0; i<imageFile.size(); i++) { 
    mappedFiles.put(imageFile.get(i), musicFile.get(i)); 
} 
1

写出位图的包装和媒体播放自己

class Media { 
    Bitmap bitmap; 
    MediaPlayer mediaPlayer 
} 

当你有映射位图和媒体播放器,创建这个类的一个对象,并将其推到一个ArrayList<Media>

为什么要使用MediaPlayer的Bitmap的HashMap来使其复杂化?

相关问题