当前位置: 首页 > 知识库问答 >
问题:

Java ArrayList拆分每个对象

劳灵均
2023-03-14

我正在尝试拆分ArrayList中的每个对象,因为很多行都包含逗号(“,”)。每个对象都包含一个项和值(但并非所有对象都包含值):

   Access control enable                             ,disabled
   Access policy prototyping                         ,enabled
   Access user group                                 
   Implicit roles access policy                      
   World access policy                               ,disabled

这是我的一段代码:

            List<String> CEP = new ArrayList<String>();
            List<String> CEV = new ArrayList<String>();
            for (String str : CE) {
                for (String s : str.split(",")) {
                    CEP.add(s.trim());
                }
            }
  • “CE”是主要的ArrayList

我的一段代码只使用逗号将其拆分为同一个ArrayList,另一个问题是如何查看没有“值”的对象并将空值添加到ArrayList。

谢谢各位。

共有3个答案

郎和通
2023-03-14

之后可以拆分并检查阵列的长度:

public static void main(String[] args) {
    List<String> ce = new ArrayList<String>();

    ce.add("Access control enable                             ,disabled");
    ce.add("Access policy prototyping                         ,enabled");
    ce.add("Access user group                                 ");
    ce.add("Implicit roles access policy                      ");
    ce.add("World access policy                               ,disabled");

    Map<String, String> cepCev = new HashMap<String, String>();

    ce.forEach((String line) -> {
        String[] splitLine = line.split(",");
        if (splitLine.length > 1) {
            cepCev.put(splitLine[0].trim(), splitLine[1].trim());
        } else {
            cepCev.put(splitLine[0].trim(), "not set");
        }
    });

    cepCev.forEach((String key, String value) -> {
        System.out.println(key + ": " + value);
    });
}
毕魁
2023-03-14

使用数组并检查其长度可以处理缺少的值:

for (String str : CE) {
    String[] a = str.split(",");
    CEP.add(a[0].trim());
    if(a.length > 1) {
        CEV.add(a[1].trim());
    } else {
        CEV.add(null); //just check that this is OK
    }
}

只需确保为缺失值(上述代码中的空值)添加到CEV的值符合要求即可。

叶阳
2023-03-14

也许使用像超级CSV这样的CSV解析器是一个不错的选择。当逗号分隔的列表开始变得更加多样化时,它将真正得到回报。

Univocity提供了CSV解析器的基准。它说univocity解析器速度很快,这并不奇怪。你可以试试看。

 类似资料:
  • 问题内容: 到目前为止,我已经看到许多可拆分的示例,但是由于某种原因,当它变得更加复杂时,我无法使其正常工作。我有一个Movie对象,该对象实现了Parcelable。本书对象包含一些属性,例如ArrayLists。执行ReadTypedList时,运行我的应用程序会导致NullPointerException!我真的不在这里 评论类: 如果有人能让我走上正确的道路,我将不胜感激,我已经花了很多时

  • 本文向大家介绍PowerShell 每个对象,包括了PowerShell 每个对象的使用技巧和注意事项,需要的朋友参考一下 示例 该ForEach-Objectcmdlet的工作原理类似于该foreach语句,但从管道中获取其输入。 基本用法 例: Foreach-Object有两个默认别名,foreach和%(简写语法)。最常见的是%因为foreach可以与foreach语句混淆。例子: 高级用

  • 在分析一位同事几年前的Java 7代码时,我发现他实现了一个遍历数据的实用程序,可能是并行的。他称之为< code>Range,它扩展了< code>Iterator接口。它的一些新方法令人尴尬的熟悉: 将给出范围的确切大小; 将范围分成2个部分,最好,但不一定,大小相似(修改当前范围并创建一个新范围); 会将范围分成 N 个子范围,可能试图使它们尽可能均匀。 尽管 来自 ,但它的子类型只是抛出了

  • 我想根据属性“amount”(空字符串)将对象分成两部分 } 对此 我即将解决它,但经过多次尝试(推送、分配、映射),它仍然不起作用。谢谢。

  • 在某些情况下,某个collection可能会非常大,比如,存储1亿条数据。这时候操作这个collection会很慢。一种最简单直接的优化方法,是将其拆分。 bugu-mongo支持对集合的拆分,可以按年、月、日、自定义字符串对其拆分。 比如,你有很多的朋友,你希望按省份存放到不同的表中,上海的存放在friend-shanghai,浙江的存放在friend-zhejiang。 步骤一:设置@Enti

  • 我们开始在团队中尝试spark。在我们减少spark中的工作后,我们希望将结果写入S3,但是我们希望避免收集Spark结果。目前,我们正在为RDD的每个分区写文件,但是这会产生很多小文件。我们希望能够将数据聚合到几个文件中,这些文件按照写入文件的对象数量进行分区。例如,我们的总数据是100万个对象(这是不变的),我们希望生成40万个对象文件,而我们当前的分区生成大约2万个对象文件(这因每个作业而异