【发布时间】:2021-01-25 15:12:03
【问题描述】:
我需要根据这三个对象创建 3 个列表:
{"cat","owl","fish","mouse","elephant"}
{"cat","owl","fish","mouse","elephant"}
{"cat","owl","fish","mouse","elephant"}
如何节省空间使我不指定"mouse", "elephant" 3 次?对象被迭代,我事先并不知道对象包含什么。
// pseudocode
public static List<String> getValuesAsList(myCoolObjects)
for(MyCoolObject myCoolObject: MyCoolObjects){
List<String> listContainingObjectValues = new ArrayList<>();
listContainingObjectvalues.add(myCoolObject.getValue1());
listContainingObjectvalues.add(myCoolObject.getValue2());
listContainingObjectvalues.add(myCoolObject.getValue3());
}
return listContaingObjectValues;
这样结果就不会是这样的:
List 1 ["cat","mouse","elephant"]
List 2 ["owl","mouse","elephant"]
List 3 ["fish","mouse","elephant"]
想要的结果是这样的:
List 1 ["cat","mouse","elephant"]
List 2 ["owl",*points to 'List 1.[1]', *points to 'List 1.[2]'*]
List 3 ["fish",*points to 'List 1.[1]', *points to 'List 1.[2]'*]
这是 Java 已经在做的事情吗?
【问题讨论】:
-
String已经是一个引用类型,所以除非你创建明确的副本,否则它已经这样做了 -
你要使用矩阵[]还是List()?
-
我基本上要问的是,如果你有这 3 个对象......并从中创建 3 个列表,java 是否会自动为相似的字符串共享相同的内存地址?
-
您的列表有多长?如果您使用超过 100,000 个项目,我会考虑这种事情。 “过早的优化是万恶之源。” -- 克努斯。