数组格式化方法

时间:2017-02-10 15:03:43

标签: java arrays sorting syntax format

您好我正在尝试格式化并创建此数组:

Person[] persons = { person1, person2, person3, person4, person5, person6, person7, person8, person9, person10 };
// The aim is to form an array of the 5 strongest people's indices above
int[] arrayOfStrongestPeopleIndices = new int[5]; 
for (int index = 0; index < 10; index++){
    int strength = persons[index].strength;

    for (int str : arrayOfStrongestPeopleIndices){

       //something @ here ?

    }
}

所以我试图循环10个人,数组arrayOfStrongestPeopleIndices应该是最强人指数中的5个(按最强到最弱的顺序排列,即array[0]是最强人的索引5,而array[4]是5)中最弱的

问题:如何返回按照规定格式化的arrayOfStrongestPeopleIndices?

3 个答案:

答案 0 :(得分:0)

所以这是我的想法,尝试过它应该有效。 当我找到一个比“最强”的ArrayList中的任何一个更强的人时,我会将其后面的所有元素移动到一个位置。

ArrayList<int> strongest = new ArrayList<int>();
strongest.append(-1, -1, -1, -1, -1);
for (int i = 0; i < 500; i++) {
    int str = persons[i].strength;
    for(int j = 0; j < 5; j++) {
        if(str > strongest[j]) {
            int temp = strongest[j];
            strongest[j] = str;
            str = temp;
        }
    }
}

答案 1 :(得分:0)

https://docs.oracle.com/javase/8/docs/api/java/util/List.html#sort-java.util.Comparator-

List<Person> p = Arrays.asList(person);

Collections.sort(p, new Comparator<Person>() {
    @Override
    public int compare(Person a1, Persona2) {
        return a1.strenght.compareTo(a2.strenght); //im assuming strenght is a number
    }
});

person = p.toArray(new Person[0]);

现在你有一个从最弱到最强的有序数组

答案 2 :(得分:0)

这是一个返回整数数组的方法,它表示最强人的索引。

public int[] findStrongestIndices(Person[] persons) {
    int[] arrayOfStrongestPeopleIndices = new int[5];

    for (int i = 0; i < 5; i++) {
        int temp = 0;
        for (int j = 0; j < 10; j++) {
            int str = persons[j].strength;
            if (i == 0) {
                if (str > temp)
                    temp = str;
            }
            else {
                if (str > temp 
                        && str < persons[arrayOfStrongestPeopleIndices[i - 1]].strength)
                    temp = str;
            }
        }

        for (int j = 0; j < persons.length; j++) {
            if (temp = persons[j].strength)
                arrayOfStrongestPeopleIndices[i] = j;
                break;
        }
    }
    return arrayOfStrongestPeopleIndices;
}

我不得不彻底检查代码以跟上编辑的步伐。这种方法将接受一个&#34; Person&#34;任意长度的数组,并返回一个长度为5的整数数组。