按特定元素对对象的ArrayList进行排序 [英] Sort ArrayList of Objects by Specific Element

查看:230
本文介绍了按特定元素对对象的ArrayList进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有几个数组列表,每个数组列表包含特定团队的球员数据.每个对象按顺序包含以下元素;球衣号码,名字,姓氏,首选位置,目标,助攻.用户决定是通过目标还是辅助来查看数据,然后以降序显示数据.目标和辅助数据均为int数据类型.

I have several arraylists which each contain player data for a specific team. Each object contains the following elements in order; Jersey Number, First Name, Last Name, Preferred Position, Goals, Assists. The user decides whether to view the data by goals or assists, and then the data is displayed in descending order. Goals and assists are both of int data type.

我将能够很好地显示数据,但我遇到的问题是如何通过这些特定统计信息之一对arrayList进行排序.因为来自所有团队的数据都在不同的arrayLists中,并且需要全部排序,所以我是否需要将arrayLists组合到一个将要排序的主arrayList中?至于排序,我做了一些研究,看起来我需要使用比较器吗?有人可以为此提供一些帮助,因为我以前从未使用过它们,而且很失落.例子会很棒.

I will be able to display the data fine but what I am stuck on is how to sort the arrayList by one of these specific stats. Because the data from all the teams is in different arrayLists, and need to be sorted all together, do I need to combine the arrayLists into one master arrayList that will be sorted? As for the sorting, I have done a bit of research and it looks like I need to use a comparator? Could someone provide some assistance with this because I have never used these before and am quite lost. Examples would be great.

我附上了一些代码段,希望可以使它们更加清晰.

I have attached a few code snippets to hopefully provide some clarity.

ArrayList <blackTeam> blackTeam = new ArrayList <blackTeam>();
ArrayList <blueTeam> blueTeam = new ArrayList <blueTeam>();
ArrayList <greenTeam> greenTeam = new ArrayList <greenTeam>();
ArrayList <orangeTeam> orangeTeam = new ArrayList <orangeTeam>();
ArrayList <redTeam> redTeam = new ArrayList <redTeam>();
ArrayList <yellowTeam> yellowTeam = new ArrayList <yellowTeam>();

private void displaystatButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
    //sort arrayList by goals/assists

}

这是我的班级的设置方式,以及向它们添加数据的方式.希望这可以解决一些问题.

This is how my classes are set up, as well as how data is added to them. Hopefully this clears up some questions.

//add data to database
black = new blackTeam(jerseyNum, firstName, lastName, prefPosition, goals, assists);
blackTeam.add(black);

class blackTeam {
    int goals, assists;
    String jerseyNum, firstName, lastName, prefPosition;

    blackTeam (String _jerseyNum, String _firstName, String _lastName, String _prefPosition, int _goals, int _assists) {
        jerseyNum = _jerseyNum;
        firstName = _firstName;
        lastName = _lastName;
        prefPosition = _prefPosition;
        goals = _goals;
        assists = _assists;
    }
}

我每个团队都有一个这样的班级.

I have one these classes for each team.

推荐答案

我建议在您的对象上使用Comparator,让我假设它是Team

I suggest using Comparator on your object, let me assume it is Team

public class Team{
    private int jerseyNumber;
    private String lastName;
    ...
    public int getJerseyNumber(){
        return jerseyNumber;
    }
}

如果要根据球衣号码排序,请生成JeseryNumberComaparator:

If you want to sort based on jersey number, generate JeseryNumberComaparator:

import java.util.Comparator;

public class JeseryNumberComaparator implements Comparator {

    @Override
    public int compare(Team t1, Team t2) {

        // descending order (ascending order would be:
        // t1.getJerseyNumber()-t2.getJerseyNumber())
        return t1.getJerseyNumber()-t2.getJerseyNumber()
    }
}

它将根据球衣号码对您的列表进行排序:

It will sort your list based on jersey number by:

Collections.sort(blackTeam, new JerseyNumberComparator());

这篇关于按特定元素对对象的ArrayList进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆