java - 如何避免java中字符串数组中的空值?

标签 java android arrays

String[] m_cPackageName;

int m_size;

int j=0;

List<ApplicationInfo> installedList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
m_size = installedList.size();

m_cPackageName=new String[m_size];

for (PackageInfo pi : pkginfoList) {

    try {
        m_appinfo = packageManager.getApplicationInfo(pi.packageName, 0);
        if ((m_appinfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
        // equal to zoo means system apps, not equal is third party installed apps 
        m_cPackageName[j]=pi.packageName;

        j++;
        }
    } catch (NameNotFoundException e) {
        Log.d(getClass().getSimpleName(), "Name not found", e);
}

这里我得到的installedList的总大小是56..在数组中填充值后,它显示为空值。我怎样才能消除空值..任何人帮助我..

输出:

m_cPackageName=String[56];

m_cPackageName[0]="Myvalue"

m_cPackageName[1]="null"

m_cPackageName[2]="null"
.

.

.

m_cPackageName[55]="null"

最佳答案

添加到数组(大小为 m_size)的元素少于 m_size,这会导致末尾出现未分配的 null 元素。

这是因为 j 有时只会增加 - 在条件条件内 ((m_appinfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) ,并且仅当未抛出并捕获异常时。

一个简单的解决方案是使用 ArrayList ,然后仅添加“已批准”元素。由于 List/ArrayList 按需增长,因此不存在固定大小数组中可能存在的尾随 null(未分配)元素。

// List, not array
List<String> m_cPackageName = new ArrayList<String>();

// ..
if ((m_appinfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
    // Only added to list sometimes, but m_cPackageName.size() is
    // always the count of elements that HAVE been added.
    m_cPackageName.add(pi.packageName);
}

// Then, if you really need an array, which will now be the proper size
// and not contain null elements because the size is computed based on the
// accepted elements in m_cPackageName which is m_cPackageName.size() ..
String[] arrayOfPackageNames = m_cPackageName.toArray(new String[0]);

关于java - 如何避免java中字符串数组中的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22088909/

相关文章:

javascript - JSON对象中的递归数据

java - Java中旅行商问题的蛮力算法

java - super.a = b 而不是 super(b)

java - 无法解析为类型(jsp + eclipse)

android - Chrome 自定义选项卡 - setCloseButtonIcon() 不更改图标

java - 数学公式未返回正确答案

arrays - 按 SWIFT 顺序从数组中进行 PFQuery

ios - 如何将 plist 的数据包括字典行到字典数组以在代码上使用它

java - 我可以并且应该将 Context 传递给 UI 外部的静态方法吗?

java - 单击选项菜单中的项目时应用程序崩溃