List-ArrayList 使用
生活随笔
收集整理的這篇文章主要介紹了
List-ArrayList 使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天優化一段代碼,如下
int num = 0; boolean skipAppend = false;int types_ext1[] = new int[] {ModuleType.TYPE_CONTACT, ModuleType.TYPE_MESSAGE,ModuleType.TYPE_PICTURE, ModuleType.TYPE_BOOKMARK,ModuleType.TYPE_MUSIC}; int types_ext2[] = new int[] {ModuleType.TYPE_CONTACT, ModuleType.TYPE_MESSAGE,ModuleType.TYPE_PICTURE, ModuleType.TYPE_BOOKMARK,ModuleType.TYPE_CALENDAR};int types_ext3[] = new int[] {ModuleType.TYPE_CONTACT, ModuleType.TYPE_MESSAGE,ModuleType.TYPE_PICTURE, ModuleType.TYPE_BOOKMARK}; if(mIsGoogleOrigCalendarExist && mIsGoogleOrigMusicExist){num = types.length;for (int i = 0; i < num; i++) {types_ext[i] = types[i] ;}MyLogger.logE("yjp", "music & calendar are not 3rd-party");} else if(!(mIsGoogleOrigCalendarExist || mIsGoogleOrigMusicExist)){num = types_ext3.length;for (int i = 0; i < num; i++) {types_ext[i] = types_ext3[i];}MyLogger.logE("yjp", "music & calendar are 3rd-party");} else if(!mIsGoogleOrigCalendarExist && mIsGoogleOrigMusicExist){num = types_ext1.length;for (int i = 0; i < num; i++) {types_ext[i] = types_ext1[i];}MyLogger.logE("yjp", "calendar is 3rd-party");} else if(mIsGoogleOrigCalendarExist && !mIsGoogleOrigMusicExist){num = types_ext2.length;for (int i = 0; i < num; i++) {types_ext[i] = types_ext2[i];}MyLogger.logE("yjp", "music is 3rd-party");}這段代碼,其實就是改變int[]里面的元素。因為int[]數組就是增刪比較麻煩,只能靠循環提取到另外的數組。所以,我想到了使用list,這樣動態改變起來就非常的方便
如下
ArrayList<Integer> typeList = new ArrayList<Integer>();for (int i = 0; i < types.length; i++) {typeList.add(types[i]);} try {PackageManager pm1 = getPackageManager();pm1.getPackageInfo("com.android.calendar", PackageManager.GET_ACTIVITIES);mIsGoogleOrigCalendarExist = true;} catch (PackageManager.NameNotFoundException e) { MyLogger.logE("yjp", "google original Calendar not found");} try {PackageManager pm2 = getPackageManager();pm2.getPackageInfo("com.android.music", PackageManager.GET_ACTIVITIES);mIsGoogleOrigMusicExist = true;} catch (PackageManager.NameNotFoundException e) { MyLogger.logE("yjp", "google original Music not found");} if (!mIsGoogleOrigMusicExist) {typeList.remove(Integer.valueOf(ModuleType.TYPE_MUSIC));} if (!mIsGoogleOrigCalendarExist) {typeList.remove(Integer.valueOf(ModuleType.TYPE_CALENDAR));} if (FeatureOption.VANZO_OOS_BROWSER_SUPPORT) {typeList.remove(Integer.valueOf(ModuleType.TYPE_BOOKMARK));} int num = typeList.size();?在修改的時候,遇到了一個問題,就是當我嘗試移除一個名為ModuleType.TYPE_BOOKMARK的元素的時候,我使用的方法是typeList.remove(ModuleType.TYPE_BOOKMARK);結果一直報錯,說是數組越界。這個是很容易理解的,因為 ModuleType.TYPE_BOOKMARK本身就是一個數值,代碼這時候認為你是移除這個位置上的元素。后來改為這個方法,成功了。另外,這個代碼中有一點還是非常值得我們學習的。就是
?
try {PackageManager pm1 = getPackageManager();pm1.getPackageInfo("com.android.calendar", PackageManager.GET_ACTIVITIES);mIsGoogleOrigCalendarExist = true;} catch (PackageManager.NameNotFoundException e) { MyLogger.logE("yjp", "google original Calendar not found");}?
它巧妙的運用了異常以后,對接下來try{}代碼不做處理的特點,更改了標志位的狀態
?
轉載于:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_arraylist_150127922.html
總結
以上是生活随笔為你收集整理的List-ArrayList 使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EasyUI中combotree允许多选
- 下一篇: ios app提交之前需要哪几个证书