[英]Add two ArrayList to one ArrayList of hashmaps
我有兩個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);
為Bitmap和Media Player自己編寫一個包裝器
class Media {
Bitmap bitmap;
MediaPlayer mediaPlayer
}
當你必須映射位圖和ArrayList<Media>
,創建這個類的對象並將它們推送到ArrayList<Media>
?
為什么要使用MediaPlayer的Bitmap的HashMap來復雜化?
根據您的評論,您根本不需要地圖,您需要類和列表:
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);
試試這種方式
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);
}
}
如果你真的需要那個結構(我不明白最后一個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));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.