gpt4 book ai didi

Java - 获取对象的arrayList中最常见的元素

转载 作者:行者123 更新时间:2023-12-02 01:06:57 25 4
gpt4 key购买 nike

我有一个如下所示的ArrayList:

ArrayList<TravelData> listOfTravels;

TravelData对象包含以下元素

int id;
String groupName;
String guideName;

这就是我初始化 arrayList 的方式:

listOfTravels.add(new TravelData(1,"group a", "Ross"));
listOfTravels.add(new TravelData(2,"group a", "Chandler"));
listOfTravels.add(new TravelData(3,"group a", "Monica"));
listOfTravels.add(new TravelData(4,"group b", "Phoebe"));
listOfTravels.add(new TravelData(5,"group b", "Rachel"));
listOfTravels.add(new TravelData(6,"group c", "Joey"));
listOfTravels.add(new TravelData(7,"group c", "Rachel"));
listOfTravels.add(new TravelData(8,"group d", "Chandler"));

我想要获取该列表中前 3 个最常见的组和指南。在此示例中:

Top 3 groups: "group a", "group b", "group c"
Top 3 guides: "Rachel", "Chandler", "Ross"

(第三名的导游可能是其他任何人,因为罗斯、莫妮卡、菲比和乔伊的出场次数相同)。

我找到了很好的答案,例如 how to get the most common element in a list但它仅适用于整数的ArrayList,并且仅显示第一个最常见的元素。

最佳答案

试试这个,它会对你有帮助。

public class TravelData {
int id;
String groupName;
public String getGroupName() {
return groupName;
}

public String getGuideName() {
return guideName;
}

String guideName;

public TravelData(int id, String groupName, String guideName) {
this.id = id;
this.groupName = groupName;
this.guideName = guideName;
}

public static void getcommonGroups(ArrayList<TravelData> list){
Map<String, Integer> wordMap = new HashMap<String, Integer>();

for(TravelData td:list){
if(wordMap.containsKey(td.getGroupName())){
wordMap.put(td.getGroupName(), wordMap.get(td.getGroupName())+1);
} else {
wordMap.put(td.getGroupName(), 1);
}
}

List<Map.Entry<String, Integer>> sortedList = sortByValue(wordMap);
for(Map.Entry<String, Integer> entry:sortedList){
System.out.println(entry.getKey()+" ===="+entry.getValue());
} }

public static List<Map.Entry<String, Integer>> sortByValue(Map<String, Integer>
wordMap) {

Set<Map.Entry<String, Integer>> set = wordMap.entrySet();
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(set);
Collections.sort( list, new Comparator<Map.Entry<String, Integer>>()
{
public int compare( Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2 )
{
return (o2.getValue()).compareTo( o1.getValue() );
}
} );
return list;
}


public static void main(String args[]){
ArrayList<TravelData> listOfTravels=new ArrayList() ;
listOfTravels.add(new TravelData(1,"group a", "Ross"));
listOfTravels.add(new TravelData(2,"group a", "Chandler"));
listOfTravels.add(new TravelData(3,"group a", "Monica"));
listOfTravels.add(new TravelData(4,"group b", "Phoebe"));
listOfTravels.add(new TravelData(5,"group b", "Rachel"));
listOfTravels.add(new TravelData(6,"group c", "Joey"));
listOfTravels.add(new TravelData(7,"group c", "Rachel"));
listOfTravels.add(new TravelData(8,"group d", "Chandler"));
getcommonGroups(listOfTravels);
}}

关于Java - 获取对象的arrayList中最常见的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895656/

25 4 0