微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java将对象[]数组转换为向量

将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的大部分时间.

原文地址:https://www.jb51.cc/java/124203.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐