【发布时间】:2015-06-08 22:46:08
【问题描述】:
我在 ArrayLists 中苦苦挣扎,我的方法 public static <T> Pair<T, Integer> mode(T items[]) 必须返回最常见的字符(或字符串、整数或双精度)以及在数组中遇到的次数。假设new String[]{"a","b","a"},那么该方法应该返回"a", 2。或者,另一个例子,new Integer[]{30,10,10,20} 应该返回10, 2(数字 10 在数组中出现两次)。请有人引导我到正确的轨道?考虑到我不允许使用 Maps、Collections... 只能使用 ArrayLists!
import java.util.ArrayList;
public class Mode {
public static <T> Pair<T, Integer> mode(T items[])
{
ArrayList<T> trackItems = new ArrayList<>();
for(T values: items)
{
trackItems.add(values);
}
for(int i = 0; i < trackItems.size(); i++)
{
int count = (Integer)trackItems.get(i);
}
}
}
public class Pair<X,Y>{
private X first;
private Y second;
public Pair(X x, Y y){
this.first = x;
this.second = y;
}
public X getFirst(){
return this.first;
}
public Y getSecond(){
return this.second;
}
public boolean equals(Object o){
if(!(o instanceof Pair)){
return false;
}
Pair p = (Pair) o;
return
this.first.equals(p.first) &&
this.second.equals(p.second);
}
public String toString(){
return String.format("(%s,%s)",first,second);
}
}
【问题讨论】:
-
嗯,你遇到了什么问题?
-
我应该如何使用泛型找出最常见的字母或整数? @塔里克
-
如果您使用的是 Java 8,ArrayList 有一个 sort 方法,可以方便您对项目进行分组和计数。