首页 > 解决方案 > Java版的python列表

问题描述

我熟悉 Python,您可以在其中制作值列表:[3, 22, 1, 88] 甚至制作列表列表:[[1, 2], ["A", "dog", 33] ,[1, 2, 3, 4]]

这些可以放入几乎任何东西。

在 Java 中,我创建了一个包含大量活动信息的 Object 类,并且我试图想出一种方法来存储该活动在一周中的哪几天(周一、周二、周三等)发生在,以及它可能发生在一个月的日期(1 日、23 日、29 日)。

当时我在想我会将它们存储在一个数组列表中,然后使用 .contains 查看特定日期是否在该对象中。因此,如果活动安排在星期一、星期二和星期五,我将创建一个包含“Monday”、“Tuesday”和“Friday”的字符串数组列表,并将该数组列表放入对象中。

或者我可以创建一个包含 7 个索引的数组(0 代表星期一,1 代表星期二...6 代表星期日),并根据该活动中的日期在每个索引位置存储一个布尔值。然后我可以拉那个索引来查看活动是否安排在那天。

但是我可以将该数组存储在对象中吗?该对象具有用于 mActivityName、mActivityLocation、int mNumberOfPeople 等的字符串。我可以将数组推入 mDaysOfWeek 吗?如果是这样,怎么做?

非常感谢,赛斯

标签: javaandroid

解决方案


如果你想采用第二种方法,它看起来像这样:

public class Activity {
   String activityName;
   String activityLocation;
   int numberOfPeople;
   boolean[] schedule;
}

像这样声明它将使数组保持不变,null直到它被初始化。您可以改为初始化它,如下所示:

public class Activity {
   String activityName;
   String activityLocation;
   int numberOfPeople;
   boolean[] schedule = new boolean[7];
}

schedule 的值现在是[false, false, false, false, false, false, false]。您可以使用经典的二传手对其进行更新:

// In the activity class
private void setSchedule(boolean[] schedule) {
   this.schedule = schedule;
}

// In whichever code is creating your activities
Activity activity = new Activity();
...
boolean[] mondaysAndWednesdays = {true, false, true, false, false, false, false};
activity.setSchedule(mondaysAndWednesdays);
...

或者,您可以包含一个方便的方法来安排特定日期的活动:

// In the Activity class
private void scheduleForDayX(int x) {
    schedule[x] = true;
}

// In whichever code is creating your activities
Activity activity = new Activity();
...
activity.scheduleForDayX(0);
activity.scheduleForDayX(2);
...

但是,这不是我建议的方法。相反,我会在一周中的 7 天创建一个enum,并按照另一个答案中的描述存储一些集合(可能是一组)。关于使用枚举而不是字符串的一些信息:为什么使用枚举而不是常量?


推荐阅读