我目前正在这样做:
Set<String> setOfTopicAuthors = ....
List<String> list = Arrays.asList(
setOfTopicAuthors.toArray( new String[0] ) );
Run Code Online (Sandbox Code Playgroud)
你能打败这个吗?
假设我有一个ArrayList
ArrayList<MyClass> myList;
Run Code Online (Sandbox Code Playgroud)
我想打电话给阿瑞,是否有使用性能的原因
MyClass[] arr = myList.toArray(new MyClass[myList.size()]);
Run Code Online (Sandbox Code Playgroud)
过度
MyClass[] arr = myList.toArray(new MyClass[0]);
Run Code Online (Sandbox Code Playgroud)
?
我更喜欢第二种风格,因为它不那么冗长,我认为编译器会确保空数组不会真正被创建,但我一直想知道这是不是真的.
当然,在99%的情况下,它不会以某种方式产生影响,但我希望在我的普通代码和优化的内部循环之间保持一致的风格......
在我的主要课程中,我有: List<Person> allPeople = new ArrayList<>();
然后在类中我有一个方法,它返回所有人的String数组Id(Person有一个访问器方法getId()).
将列表转换为只有Ids为String的数组的最漂亮的方法是什么?
这是我目前的解决方案:
public String[] getAllId() {
Object[] allPeopleArray = allPeople.toArray();
String allId[] = new String[allPeople.size()];
for(int i=0; i<=allPeople.size()-1; i++){
allId[i] = ((Person)allPeopleArray [i]).getId();
}
return allId;
}
Run Code Online (Sandbox Code Playgroud)
以上是有效的,但有没有"更好"的方法呢?