下面是我写的方法,但感觉应该是不多,请高手指点一下,最后也能写出代码,谢谢:
public static String[] getElementFromVector(Vector vector){
int i = 0;
String str[] = null;
String strData[] = null;
str = new String[15];
strData = new String[3];

Enumeration e = vector.elements();
while(e.hasMoreElements()){
str[i] = (String)e.nextElement();
if(str[i].compareTo(str[i-1])>0){
strData[i] = str[i];
}
else
strData[i] = str[i-1];

i++;
} return strData;
}

解决方案 »

  1.   

    我修改了下,请帮我看看是否正确
        public static String[] getElementFromVector(Vector vector) {
            String strData[] =   new String[3];
            String a="";
            int s=0;
            Enumeration e = vector.elements();
            while (e.hasMoreElements()) {
               String vv = (String)e.nextElement();
               if(a.indexOf(vv+",")<0){
                  a+=vv+",";
                 strData[s]=vv;
                   s++;
               }            
            }
            for (int i = 0; i < strData.length; i++) {
                String s1 = strData[i];
                if(s1==null)
                {
                    strData[i]=strData[0];
                }
            }        return strData;
        }
      

  2.   

    import java.util.*;public class Test4{
    public static void main(String[] args){
            Vector<String> myVector=new Vector<String>(Arrays.asList("1","1","2","3","2","4","3"));
            String[] result=getElementFromVector(myVector,3);
            System.out.println(Arrays.toString(result)); }
    public static String[] getElementFromVector(Vector<String> vector,int count){ 
    Set<String> mySet=new HashSet<String>(vector);
    if(mySet.size()<count){
    System.out.println("不相同的元素数量不够");
    }
    String[] result=new String[count];
    int index=count-1;
    for(String str:mySet){
    if(index<0){
    break;
    }
    result[index--]=str;
    }
    return result;
    }

    }
      

  3.   

    bigbug9002谢谢你的热心帮忙啊,那么我上面的实现方法有问题吗?
      

  4.   

    我看不懂你的代码,下面是我的代码,我估计你也看不懂我的代码.
    好在我的代码能出来结果:
    import java.util.*;public class Test4{
    public static void main(String[] args){
            Vector<String> myVector1=new Vector<String>(Arrays.asList("1","1","1","1","1","4","1"));
            Vector<String> myVector2=new Vector<String>(Arrays.asList("1","1","3","1","2","4","1"));
            String[] result1=getElementFromVector(myVector1,3);
            String[] result2=getElementFromVector(myVector2,3);
            System.out.println(Arrays.toString(result1));
            System.out.println(Arrays.toString(result2)); }
    public static String[] getElementFromVector(Vector<String> vector,int count){ 
    Set<String> mySet=new HashSet<String>(vector);
    String[] result=new String[count];
    int index=count-1;
    for(String str:mySet){
    if(index<0){
    break;
    }
    result[index--]=str;
    }
    if(index>=0){
    for(String str:vector){
    result[index--]=str;
    if(index<0){
    break;
    }
    }
    }
    return  result;
    }}F:\java>java Test4
    [1, 4, 1]
    [1, 2, 3]
      

  5.   

    我是在J2ME下写的,所以最好是用String ,String[], Vector来实现,其他的类型怕是不支持
      

  6.   

    import java.util.*;public class Test4{
    public static void main(String[] args){
            Vector<String> myVector1=new Vector<String>(Arrays.asList("4","1","1","1","1","1","1"));
            Vector<String> myVector2=new Vector<String>(Arrays.asList("1","1","3","1","2","4","1"));
            String[] result1=getElementFromVector(myVector1,3);
            String[] result2=getElementFromVector(myVector2,3);
            System.out.println(Arrays.toString(result1));
            System.out.println(Arrays.toString(result2)); }
    public static String[] getElementFromVector(Vector<String> vector,int count){ 
    Map<String,Integer> myMap=new HashMap<String,Integer>();
    for(int i=0;i<vector.size();i++){
    myMap.put(vector.get(i),i);
    }
    String[] result=new String[count];
    int index=count-1;
    for(String str:myMap.keySet()){
    if(index<0){
    break;
    }
    result[index--]=str;
    }
    if(index>=0){
    boolean isAll=false;
    for(int i=0;i<vector.size()&&!isAll;i++){
    for(int j=count-1;j>index;j--){
    String str=vector.get(i);
    if(str.equals(result[j])&&myMap.get(str).intValue()!=i){
    result[index--]=str;
    if(index<0){
    isAll=true;
    break;
    }
    }
    }
    }
    }
    return  result;
    }}
    这个应该是没有问题的.
      

  7.   

    Map应该有吧
    简化一下算法:import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Vector;public class Test4{
        public static void main(String[] args){
         Vector<String> myVector;
         String[] result;
        
            myVector=new Vector<String>(Arrays.asList("1","1","1","1","3","4","1"));
            result=getElementFromVector(myVector,3);
            System.out.println(Arrays.toString(result));
            
            myVector=new Vector<String>(Arrays.asList("1","1","1","1","1","4","1"));
            result=getElementFromVector(myVector,3);
            System.out.println(Arrays.toString(result));
            
            myVector=new Vector<String>(Arrays.asList("1","1","1","1","1","1","1"));
            result=getElementFromVector(myVector,3);
            System.out.println(Arrays.toString(result));    }
        public static String[] getElementFromVector(Vector<String> vector,int count){ 
            String[] result=new String[count];     Map<String, Integer> myMap = new HashMap<String, Integer>();
    for(String str:vector){
    if(myMap.get(str) == null){
    myMap.put(str, 1);
    }else{
    myMap.put(str, myMap.get(str) + 1);
    }
    }

    while (count > 0){
        for(String str : myMap.keySet()){
                if(count <= 0){
                 break;
                }
                if(myMap.get(str) > 0){
                result[--count]= str;
                myMap.put(str, myMap.get(str) - 1);
                }
        }
        }
            return result;
        }
        
    }
      

  8.   

                    if(count <= 0){
                        break;
                    }
    是多余的,可以去掉
      

  9.   


    public static List getElementFromVector(Vector vector) { 
            List strData =  new ArrayList(); 
            
            if (vector != null && vector.size() >=3) {
            strData.add(vector.get(0));
            for (int i = 1; i < vector.size(); i++) {
             if (!strData.contains(vector.get(i))) {
             strData.add(vector.get(i));
    }
             if (strData.size() >= 3) {
             break;
             }
            }
            
            if (strData.size() == 1) {
             strData.add(strData.get(0));
             strData.add(strData.get(0));
            }
            if (strData.size() == 2) {
             if (strData.get(1).equals(vector.get(1))) {
             strData.add(vector.get(2));
    } else {
    strData.add(1,vector.get(1));
    }
            }
            }
            return strData; 
        }