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 使用相关推荐
- Java List与ArrayList 的区别(List list =new Arraylist(); ArrayList<String> arrayList = new ArrayList())
一般想知道List 与ArrayList 的区别可能大部分都是看到了 List list = new ArrayList(); 和 ArrayList arrayList = new ArrayLis ...
- List 为什么可以实例化ArrayList
昨天我带的一个同事问我List 为什么可以实例化ArrayList,刚开始一下萌了(带了快 2个月了) 比如List list = new ArrayList(); List 是一个接口, 接口使用的 ...
- ArrayList源码学习
可增长数组结构 实现: 1. 内部采用数组的方式. 1.1 添加元素,会每次校验容量是否满足, 扩容规则是当前数组长度+当前数组长度的二分之一.容量上限是Integer.MAX_VALUE. copy ...
- 比较ArrayList、LinkedList、Vector
翻译人员: 铁锚 翻译时间: 2013年12月2日 原文链接: ArrayList vs. LinkedList vs. Vector 1. List概述 List,就如图名字所示一样,是元素的有序列 ...
- 3月7日 ArrayList集合
ArrayList与数组的区别: 数组是连续的.同一类型数据的一块区域,而集合可以是不连续的.多种数据类型的. 1.ArrayList ArrayList al = new ArrayList(); ...
- 转 java c++互传arraylist
Java JNI由浅入深(包括:Java和C++互传ArrayList泛型对象参数) 2010-11-25 09:57 1694人阅读 评论(1) 收藏 举报 我们知道Java是一个运行在虚拟机里面的 ...
- List and ArrayList
List<> and ArrayList Class Diagrams Using the Bit Complement of the BinarySearch() Result 代码 ...
- java arraylist和list_Java中ArrayList和LinkedList区别
原文链接:http://pengcqu.iteye.com/blog/502676 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据 ...
- Java 集合框架(二)—— ArrayList
二.数组列表 -- ArrayList 1.构造方法 ArrayList 是 Java 中的动态数组,底层实现就是对象数组,只不过数组的容量会根据情况来改变. 它有个带 int 类型参数的构造方法,根 ...
- ArrayList Iterator remove java.lang.UnsupportedOperationException
在使用Arrays.asList()后调用add,remove这些method时出现 java.lang.UnsupportedOperationException异常.这是由于Arrays.asLi ...
最新文章
- linux 把根目录设置成777权限的补救方法
- spark(1.1) mllib 源代码分析
- Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程
- prefixspan java_PrefixSpan序列模式挖掘算法
- python正则查找_python正则查找
- android toolbar 颜色渐变,android – 如何使渐变形状留在CollapsingToolbarLayout标题后面...
- 学习Linux的决心书
- nexus本地maven仓库部署及下载
- 通俗易懂的虚短、虚断的使用条件?
- STM32单片机bootloader扫盲
- matlab设置角度和弧度制,matlab 可不可以用角度制不用弧度制?
- 医院私有云架构统一灾备中心建设最佳实践
- JS利用for多重循环制作9*9乘法表
- Django之stark组件1
- 服务器装虚拟机要做阵列吗,vm虚拟机做磁盘阵列
- springboot:redis报错io.lettuce.core.RedisCommandExecutionException: ERR Client sent AUTH, but no passw
- 【Android音视频开发】【032】Android从RTMP流中提取H264和AAC数据进行播放
- 网页html通过隐藏域传送数据给web服务器
- 关于php内部编码与mysql字符差异问题的研究
- Linux实现剪刀石头布游戏,Python剪刀石头布游戏
热门文章
- java 0x转中文_Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字...
- Maven 多模块项目,多个root解决方法
- idea 代码自动补全快捷键
- 安装mysql为什么下载了很多_mysql下载与安装过程
- java怎么不安装到c盘的教程,帮您设置win10系统安装不了java的详细步骤
- js里面字符数字和数字相加_「译」5 个奇怪的只会在 JS 里才发生的趣事
- Java基础:动态代理
- 去停用词 java代码_如何在java中去除中文文本的停用词
- 14大招打造你的平面设计创意
- tomcat7 https 拒绝连接_Ubuntu上运行Docker提示权限拒绝,如何处理?