我有两个ArrayList
,我希望通过添加ArrayList
来创建一个 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);
,两个列表都有相同的大小
我会这样做。
这是优化的,还是可以在列表变大时使其更好,更有效?
即。
{{1}}
答案 0 :(得分:1)
为Bitmap编写一个包装器,并自己编写Media Player
class Media {
Bitmap bitmap;
MediaPlayer mediaPlayer
}
当您必须映射位图和媒体播放器时,请创建此类的对象并将其推送到ArrayList<Media>
?
为什么要使用MediaPlayer的Bitmap的HashMap来复杂化?
答案 1 :(得分: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);
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
如果你真的需要那个结构(我不明白最后ArrayList
的处理是什么),那么我认为它已经相当优化了。
你没有办法轻松地从两个列表中创建一个Map,所以你必须循环遍历它们,因为这些是数组列表,一个非常简单的for
将是非常明确的:< / p>
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));
}