Hen*_*sel 10 java arrays vector java-me
将Object数组转换为Vector的最佳方法是什么?
JDE <1.5
public Vector getListElements()
{
Vector myVector = this.elements;
return myVector;
}
Run Code Online (Sandbox Code Playgroud)
this.elements是一个Object []
谢谢,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;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*ine 36
return new Vector(Arrays.asList(elements));
Run Code Online (Sandbox Code Playgroud)
现在,它看起来好像是在复制数据两次,但事实并非如此.你确实得到一个小的临时对象(一个List
来自asList
),但这提供了一个数组的视图.读取和写入操作不是复制它,而是进入原始数组.
它可以扩展Vector
和戳它的protected
领域.这将提供一种相对简单的方法,使其Vector
成为数组的视图,就像Arrays.asList
这样.或者,只需将数据复制到字段中即可.对于Java ME来说,如果没有编写明显的循环,这就好了.未经测试的代码:
return new Vector(0) {{
this.elementData = (Object[])elements.clone();
this.elementCount = this.elementData.length;
}};
Run Code Online (Sandbox Code Playgroud)
当然,你可能List
比a 更好Vector
.1.4已完成其服务终止期限.甚至1.5已完成其EOSL期间的大部分时间.