java - 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 吗?如果是这样,怎么做?
非常感谢,赛斯
解决方案
如果你想采用第二种方法,它看起来像这样:
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
,并按照另一个答案中的描述存储一些集合(可能是一组)。关于使用枚举而不是字符串的一些信息:为什么使用枚举而不是常量?
推荐阅读
- lua - 不寻常的 LUA 函数语法
- java - org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter 类型无法解析
- angular - AlertController - 带有按钮文本的离子图标
- angular - 我需要为每个页面创建不同的解析器吗?每个页面都有不同的 API 调用。角度 2+
- php - 在 laravel eloquent 中的某个特定行之后获取数据
- python - 如何找出熊猫中最大值出现的次数?
- sql - Impala 中的 REGEXP_EXTRACT
- r - Miss colorout 库(安装 rCharts)
- c++ - 是否可以获得根据 ADL 调用的函数的 decltype?
- assembly - 在程序集中设置显存VGA/VESA的自定义基地址