【发布时间】:2019-09-21 21:44:39
【问题描述】:
我认为可以通过示例更好地解释:
我有数组列表,名称为 sname、stime、snumber 等,每个都带有不同的值
和一个动态字符串“dString”,它是"s" 和一个携带(名称、时间、数字等)的变量 VR 的串联。
B基于我从循环中获得的 VR 值,我想在方法中使用相应的数组列表。如何使用 dString 来引用各自的数组列表?
ArrayList<String> sname = new ArrayList<>();
ArrayList<String> stime= new ArrayList<>();
ArrayList<String> snumber = new ArrayList<>();
String[] VR = {"name","time","number"};
for(String str:VR) {
String dString = "s"+str;
String temp= dString.get(2); //How to get this?
}
(这只是一个例子。arraylists 不是空的。这是一个很长的程序,所以我没有包含它。
【问题讨论】:
-
这是行不通的,也不应该这样做。请改用
Map(键值存储)。您不能通过名称动态访问局部变量。 -
和无关的:阅读 java 命名约定。使用像 sname 这样的匈牙利符号来表示“它是一个字符串”是 1990 年的事。我们在 Java 中不这样做。适当的名称是“名称”或“时间戳”。并提示:不要将时间存储为字符串。使用表示时间信息的众多内置类之一。如果你只使用原始字符串,为什么还要使用静态编译的语言呢?!
-
只是给你的评论我正在尝试尽可能减少程序大小并尽可能减少代码和变量 ...那里的路非常危险!具有大型数据库的大型程序可能很重要。您或其他人可能会在未来数周、数月、数年内使用该源代码。当您为了性能而牺牲可读性时……您可能两样都没有。说真的:永远不要假设您可以通过编写“聪明”的 Java 源代码来提高 Java 性能!
-
相反:Java 性能取决于即时编译器是否能够完成其工作。猜猜看:JIT 最适用于小方法,并且代码看起来像其他人编写的代码的 99%。一旦您尝试编写“聪明”的 java 源代码,当将其转换为机器代码时,JIT 可能更难以正确优化您的字节码!因此:当您确实遇到性能问题时,请使用分析器测量您的代码在哪里花费最多 CPU 周期。
-
@GhostCat 谢谢。我会记住这一点,然后切换回像 stephan Hogenboom 也建议的课程。有问题的代码和变量都是例如。我正在使用的变量和代码是不同的。但是谢谢你的建议。以后我会避免使用匈牙利符号。另外,谢谢你称它为“聪明”^_^
标签: java android string arraylist