将Object数组转换为Vector的最佳方式是什么?
JDE< 1.5
public Vector getListElements() { Vector myVector = this.elements; return myVector; }
this.elements是一个对象[]
谢谢,
rAyt
我应该澄清我的问题
我的目标平台是黑莓.
不支持集合. Array.asList()不是,或者:/
全班
package CustomElements; import net.rim.device.api.ui.component .*; import net.rim.device.api.collection.util.*; import net.rim.device.api.util.*; import java.util.*; public class ContactsList extends SortedReadableList implements KeywordProvider { // Constructor public ContactsList(Vector contacts) { super(new ContactsListComparatorByFirstName()); loadFrom(contacts.elements()); } // Add Element to ContactsSortedReadableList void addElement(Object element) { doAdd(element); } public Vector getListElements() { return new Vector(Collection Vector test = this.getElements(); } // getKeywords public String[] getKeywords(Object element) { return StringUtilities.stringToWords(((Contact)element).get_contactFirstName()); // return StringUtilities.stringToWords(element.toString()); } // Comparator sorting Contact objects by name final static class ContactsListComparatorByFirstName implements Comparator { public int compare(Object o1,Object o2) { // Sticky Entries Implementation if(((ContactsListObject)o2).getSticky()) { return 1; } else if (((ContactsListObject)o1).getSticky()) { return -1; } else { if(((ContactsListObject)o1).get_contactFirstName().compareTo(((ContactsListObject)o2).get_contactFirstName()) <0) { return -1; } if(((ContactsListObject)o1).get_contactFirstName().compareTo(((ContactsListObject)o2).get_contactFirstName()) >0) { return 1; } else { return 0; } } } } }
解决方法
return new Vector(Arrays.asList(elements));
现在,它可能看起来像是复制数据两次,但是你不是.你得到一个小的临时对象(从asList列表),但是这提供了一个数组的视图.而不是复制它,读写操作将转到原始数组.
可以扩展Vector并戳出其受保护的字段.这将给出一个比较简单的方式,使得Vector成为数组的视图,就像Arrays.asList一样.或者,只需将数据复制到字段中即可.对于Java ME来说,这与在没有编写明显循环的情况下一样好.未验证代码:
return new Vector(0) {{ this.elementData = (Object[])elements.clone(); this.elementCount = this.elementData.length; }};
当然,你可能比一个List比Vector更好. 1.4已完成使用寿命终止期.即使1.5已经完成了EOSL的大部分时间.