下面是我写的方法,但感觉应该是不多,请高手指点一下,最后也能写出代码,谢谢:
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;
}
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;
}
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;
}
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;
}
}
好在我的代码能出来结果:
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]
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;
}}
这个应该是没有问题的.
简化一下算法: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;
}
}
break;
}
是多余的,可以去掉
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;
}