Java 如何对由“组合”组成的数组进行排序;空";还有绳子?
我得到了20个数组:Java 如何对由“组合”组成的数组进行排序;空";还有绳子?,java,arrays,string,sorting,null,Java,Arrays,String,Sorting,Null,我得到了20个数组: private Karte[] deckArr; deckArr = new Karte[20]; 现在,我想在每次添加新卡时按卡名称对数组进行排序 另外,点击一个按钮后,这些卡会一个接一个地添加,因此阵列中有空的空间 自从 Arrays.sort(deckArr.getName()); …方法在这里不起作用我问自己是怎么做到的 卡丁车(卡丁车)等级: 包模型; /** *由204g07于2016年3月18日创建。 */ 公共类卡丁车实现可比内容{ 舍恩海特私人酒店;
private Karte[] deckArr;
deckArr = new Karte[20];
现在,我想在每次添加新卡时按卡名称对数组进行排序
另外,点击一个按钮后,这些卡会一个接一个地添加,因此阵列中有空的空间
自从
Arrays.sort(deckArr.getName());
…方法在这里不起作用我问自己是怎么做到的
卡丁车(卡丁车)等级:
包模型;
/**
*由204g07于2016年3月18日创建。
*/
公共类卡丁车实现可比内容{
舍恩海特私人酒店;
斯泰尔克私人酒店;
格施温迪基特私人酒店;
私有int intelligenz;
私人的冷静;
私服;
私有字符串seltenheit;
私有字符串名称;
公共卡丁车(管柱pName、管柱PSCHOUENHEIT、管柱pStaerke、管柱pGeschwindigkeit、管柱PINTELIGENZ、管柱PCOOLESS、管柱pSeltenheit){
name=pName;
schoenheit=pSchoenheit;
斯塔尔克=普斯塔尔克;
geschwindigkeit=pGeschwindigkeit;
intelligenz=pIntelligenz;
冷却度=冷却度;
alter=微不足道;
seltenheit=pSeltenheit;
}
//吸气剂
公共int getSchoenheit(){
返回舍恩海特;
}
public int getStaerke(){
返回staerke;
}
public int getGeschwindigkeit(){
返回geschwindigkeit;
}
public int getIntelligenz(){
返回intelligenz;
}
公共int getCoolness(){
回归清凉;
}
公共int getAlter(){
返回更改;
}
公共字符串getSeltenheit(){
返回seltenheit;
}
公共字符串getName(){
返回名称;
}
//塞特
公共空间设置Choenheit(int pSchoenheit){
schoenheit=pSchoenheit;
}
公共空间设置塔尔克(国际太平洋海岸){
斯塔尔克=普斯塔尔克;
}
公共无效设置CHWINDIGGEIT(int pGeschwindigkeit){
geschwindigkeit=pGeschwindigkeit;
}
公共空间setIntelligenz(int pIntelligenz){
intelligenz=pIntelligenz;
}
公共空间设置冷却度(内部冷却度){
冷却度=冷却度;
}
公共无效设置更改(内部更改){
alter=微不足道;
}
公共无效设置seltenheit(字符串pSeltenheit){
seltenheit=pSeltenheit;
}
public void setName(字符串pName){
name=pName;
}
@凌驾
公共布尔无岛(卡丁车){
if(getName().compareTo(karte.getName())<0){
返回true;
}否则{
返回false;
}
}
@凌驾
公共布尔相等(卡丁车){
返回getName()==karte.getName();
}
@凌驾
公共布尔值更大(卡丁车){
如果(getName().compareTo(karte.getName())>0){
返回true;
}否则{
返回false;
}
}
}
感谢您的帮助 这应该能解决你的问题。实现
可比较的
接口
/**
* Created by 204g07 on 18.03.2016.
*/
public class Karte implements Comparable<Karte>{
private int schoenheit;
private int staerke;
private int geschwindigkeit;
private int intelligenz;
private int coolness;
private int alter;
private String seltenheit;
private String name;
public Karte(String pName, int pSchoenheit,int pStaerke,int pGeschwindigkeit, int pIntelligenz, int pCoolness, int pAlter, String pSeltenheit ) {
name=pName;
schoenheit=pSchoenheit;
staerke=pStaerke;
geschwindigkeit=pGeschwindigkeit;
intelligenz=pIntelligenz;
coolness=pCoolness;
alter=pAlter;
seltenheit=pSeltenheit;
}
//getter
public int getSchoenheit(){
return schoenheit;
}
public int getStaerke(){
return staerke;
}
public int getGeschwindigkeit(){
return geschwindigkeit;
}
public int getIntelligenz(){
return intelligenz;
}
public int getCoolness(){
return coolness;
}
public int getAlter(){
return alter;
}
public String getSeltenheit(){
return seltenheit;
}
public String getName(){
return name;
}
//setter
public void setSchoenheit(int pSchoenheit){
schoenheit = pSchoenheit;
}
public void setStaerke(int pStaerke){
staerke = pStaerke;
}
public void setGeschwindigkeit(int pGeschwindigkeit){
geschwindigkeit = pGeschwindigkeit;
}
public void setIntelligenz(int pIntelligenz){
intelligenz = pIntelligenz;
}
public void setCoolness(int pCoolness){
coolness = pCoolness;
}
public void setAlter(int pAlter){
alter = pAlter;
}
public void setSeltenheit(String pSeltenheit){
seltenheit = pSeltenheit;
}
public void setName(String pName){
name = pName;
}
public int compareTo(Karte karte) {
return this.name.compareTo(karte.getName());
}
}
/**
*由204g07于2016年3月18日创建。
*/
公共级卡丁车{
舍恩海特私人酒店;
斯泰尔克私人酒店;
格施温迪基特私人酒店;
私有int intelligenz;
私人的冷静;
私服;
私有字符串seltenheit;
私有字符串名称;
公共卡丁车(管柱pName、管柱PSCHOUENHEIT、管柱pStaerke、管柱pGeschwindigkeit、管柱PINTELIGENZ、管柱PCOOLESS、管柱pSeltenheit){
name=pName;
schoenheit=pSchoenheit;
斯塔尔克=普斯塔尔克;
geschwindigkeit=pGeschwindigkeit;
intelligenz=pIntelligenz;
冷却度=冷却度;
alter=微不足道;
seltenheit=pSeltenheit;
}
//吸气剂
公共int getSchoenheit(){
返回舍恩海特;
}
public int getStaerke(){
返回staerke;
}
public int getGeschwindigkeit(){
返回geschwindigkeit;
}
public int getIntelligenz(){
返回intelligenz;
}
公共int getCoolness(){
回归清凉;
}
公共int getAlter(){
返回更改;
}
公共字符串getSeltenheit(){
返回seltenheit;
}
公共字符串getName(){
返回名称;
}
//塞特
公共空间设置Choenheit(int pSchoenheit){
schoenheit=pSchoenheit;
}
公共空间设置塔尔克(国际太平洋海岸){
斯塔尔克=普斯塔尔克;
}
公共无效设置CHWINDIGGEIT(int pGeschwindigkeit){
geschwindigkeit=pGeschwindigkeit;
}
公共空间setIntelligenz(int pIntelligenz){
intelligenz=pIntelligenz;
}
公共空间设置冷却度(内部冷却度){
冷却度=冷却度;
}
公共无效设置更改(内部更改){
alter=微不足道;
}
公共无效设置seltenheit(字符串pSeltenheit){
seltenheit=pSeltenheit;
}
public void setName(字符串pName){
name=pName;
}
公共国际比较(卡丁车){
返回这个.name.compareTo(karte.getName());
}
}
然后您只需要调用
Arrays.sort(deckArr)代码>您需要检查空值,只需在下面调用即可--
Arrays.sort(deckArr,新的比较器(){
@凌驾
公共整数比较(卡丁车1、卡丁车2){
if(karte1.getName()==null&&karte2.getName()==null){
返回0;
}
if(karte1.getName()==null){
返回1;
}
if(karte2.getName()==null){
返回-1;
}
返回karte1.getName().compareTo(karte2.getName());
}});
为什么不直接使用ArrayList呢?更容易添加、删除元素,您将永远不会有空插槽
无论如何,要排序,可以使用集合。按如下方式排序:
deckArr = new ArrayList<Karte>();
Collections.sort(deckArr, Comparator.comparing(karte -> karte.getName()));
deckArr=newarraylist();
Collections.sort(deckArr、Comparator.comparing(karte->karte.getName());
Java 8提供了一个简单的解决方案:
可比较接口有一个静态方法,该方法创建一个带有提取器的Comaprator
Comparator<Card> comp = Comparator.comparing(Karte::getName);
Comparator comp=Comparator.compa
deckArr = new ArrayList<Karte>();
Collections.sort(deckArr, Comparator.comparing(karte -> karte.getName()));
Comparator<Card> comp = Comparator.comparing(Karte::getName);
Comparator<Card> comp = Comparator.nullsLast(Comparator.comparing(Card::getName));