Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对由“组合”组成的数组进行排序;空";还有绳子?_Java_Arrays_String_Sorting_Null - Fatal编程技术网

Java 如何对由“组合”组成的数组进行排序;空";还有绳子?

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日创建。 */ 公共类卡丁车实现可比内容{ 舍恩海特私人酒店;

我得到了20个数组:

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));