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

如何在java或Kotlin中拆分对象数组?

司空胤
2023-03-14

我已经在这里问了一个问题,但是这个问题只回答了字符串。我不能编辑它,因为那里已经有几个答案了。

现在,我明白了如何用那篇文章中给出的空格分割它。但是,我如何用像这样的自定义类对象分割它:

public class User{
   private boolean isAdult = false;
   private int age = 0;

   @Override
   public String toString(){
      return "User : { isAdult = " + isAdult + "        age = " + age + "}"
   }

   // getters and setters
}

现在,我想在isAdult为false的地方拆分。例如,我有这个数组:

[User : { isAdult = true         age = 19}, User : { isAdult = false         age = 10}, User : { isAdult = true         age = 38}, User : { isAdult = false         age = 17}, User : { isAdult = true         age = 19}]

现在,如果将isAdult拆分为false,则如下所示:

Array1 = [User : { isAdult = true         age = 19}]
Array2 = [User : { isAdult = true         age = 38}]
Array3 = [User : { isAdult = true         age = 19}]

那么,如何在java或静态编程语言中实现这一点

共有2个答案

阎啸
2023-03-14

根据tqurat的答复(Java):

public static class User{
        boolean isFalse;
        int value;

        public User(boolean b, int v){
            this.isFalse = b;
            this.value = v;
        }

        public String toString() { return "User("+this.isFalse+", "+this.value+")"; }
}


 public static void main(String[] args) {
        User[] users = {new User(true, 5), new User(true, 1),new User(false, 7),
                new User(true, 10), new User(false, 3)};
        ArrayList<User[]> output = new ArrayList<>();

        int start = 0;
        int end = 0;
        while( end < users.length )
        {
            if( users[end].isFalse == false)
            {
                output.add( Arrays.copyOfRange( users, start, end  ));
                start = end + 1;
            }
            ++end;
        }
        if( start < end ) output.add( Arrays.copyOfRange( users, start, end ));

        for (User[] arr: output){
            System.out.println(Arrays.toString(arr));
        }

    }

给出输出:

[User(true, 5), User(true, 1)]
[User(true, 10)]
谭繁
2023-03-14

这是科特林的回答

我并不完全清楚,但假设您使用的是一个用户对象数组,此函数将返回一个数组,其中每个用户都是成年人:

fun convert(array : Array<User>) : Array<Array<User>> =
    array.filter { it.isAdult }.map { arrayOf(it) }.toTypedArray()

编辑:

从您希望将其分组为连续成年用户的公认答案来看,这里有一个完整的kotlin工作程序来演示它。转换没有分组,转换2具有:

data class User(var isAdult : Boolean, var age: Int) {
    override fun toString(): String {
        return "User : { isAdult = $isAdult        age = $age}"
    }
}

fun main() {
    val users = arrayOf(
        User(true, 3),
        User(true, 5),
        User(false, 6),
        User(true, 7),
        User(false, 9),
        User(true, 11)
    )

    for (array in convert(users)) {
        println(array.contentToString())
    }
    println("==============")
    for (array in convert2(users)) {
        println(array.contentToString())
    }
}

fun convert(array : Array<User>) : Array<Array<User>> =
    array.filter { it.isAdult }.map { arrayOf(it) }.toTypedArray()

fun convert2(array : Array<User>) : Array<Array<User>> =
    array.fold(arrayOf(arrayOf())) { result, user ->
        if (user.isAdult) {
            result.copyOf(result.lastIndex).filterNotNull().toTypedArray() + (result.last() + user)
        } else result + arrayOf<User>()
    }

输出:

[User : { isAdult = true        age = 3}]
[User : { isAdult = true        age = 5}]
[User : { isAdult = true        age = 7}]
[User : { isAdult = true        age = 11}]
==============
[User : { isAdult = true        age = 3}, User : { isAdult = true        age = 5}]
[User : { isAdult = true        age = 7}]
[User : { isAdult = true        age = 11}]
 类似资料:
  • 如何拆分阵列?例如,我有一个如下字符数组: 现在,我想用位置6上可以看到的空格拆分数组。拆分后数组将如下所示: 我确实在这里找到了类似的帖子,但在java或Kotlin中没有。 我知道我可以这样做: 但是,如果可能的话,我想要另一种方式。这占用了大量内存,在大型数组上也需要大约30-40毫秒 如何使用java或静态编程语言做到这一点

  • 到目前为止,在阅读一些Java教程时,我一直在使用以下语法分配数组: 但自从我开始使用类以来,事情一直让我困惑: 我在main函数中使用这个类,如下所示: 这一行应该给我一个由构造函数默认初始化的三个对象组成的数组。 当我执行以下操作时,运行时会出现异常。 在C语言中,这非常简单,不需要额外的新代码: 所以,在进一步搜索后,我发现我仍然需要为数组中的每个元素分配内存才能真正开始使用它们。如果是这样

  • 问题内容: 如果我有网址。 https://graph.facebook.com/me/home?limit=25&since=1374196005 我可以获取(或拆分)参数(避免硬编码)吗? 像这样 https: /// **graph.facebook.com /// 我/家 /// {limit = 25,sincse = 1374196005}** 问题答案: 使用Android的类。 h

  • 我正在尝试拆分ArrayList中的每个对象,因为很多行都包含逗号(“,”)。每个对象都包含一个项和值(但并非所有对象都包含值): 这是我的一段代码: “CE”是主要的ArrayList 我的一段代码只使用逗号将其拆分为同一个ArrayList,另一个问题是如何查看没有“值”的对象并将空值添加到ArrayList。 谢谢各位。

  • 如何从web3j库中引用数组类型?我有一个契约函数,它返回访问该契约的人的地址数组。我想把这些作为数组放到java/kotlin项目中。这是代码-