当前位置: 首页 > 知识库问答 >
问题:

如何在java中对数组类型列表进行排序?

穆宾白
2023-03-14

正如我的问题所描述的,如何在java中对类型数组的列表进行排序?

这是我的ListClass

package AlgorithmAndDataStructures;
public class ListClass<T>{
    private static final int MAX_SIZE_OF_LIST = 100;
    /**
     * This class is having definitions for:-
     * Generic List Class Variables
     * Constructor for Creating Class Objects
     * Method: Adding a Element to the End of List
     * Method: Adding a Element at anywhere/ particular place
     * Method: Checking List is full or not.
     * Method: Checking List is Empty or Not.
     * Method: Displaying All Elements of List
     * Method: Making New Space for new element addition.
     * Method: Sorting a List
     */

    // Declaring Array and Variables
    private T[] listArray;
    private int totalElements;

    // Constructor For ListClass
    @SuppressWarnings("unchecked")
    public ListClass(int listSize) { // entered by the user on runtime
        totalElements = 0;
        listArray = (T[]) new Object[listSize];
    }

    // Method For Adding an Element
    public boolean addElement(T newElement)
    {
        boolean isElementAdded = true;
        if(!isListFull()) {
            listArray[totalElements] = newElement;
            totalElements++;
        }
        else
            System.out.println("Sorry, the list is full so, new element can not      be added.");
            isElementAdded = false;
        return isElementAdded;
    }

    // length = totalElements
    // Method for Adding/Inserting Element in any Particular Place
    public boolean addSpecific(int newLocation, T newElement) {
        boolean elementAdded = true;
        if (!isListFull() && (newLocation >= 1) && (newLocation <= totalElements +1) )
        {
            newSpace(newLocation);
            listArray[newLocation -1] = newElement;
            totalElements++;
            }
        else {
            elementAdded = false;
        }
        return elementAdded;
    }

    // Method for Displaying The List Elements
        public void displayListElement() {
            if(isListEmpty())
            {
                System.out.println("Sorry, there is no element in the List!");
            }
            else 
            {
            for(int elements = 0; elements < totalElements; elements++  ) {
                System.out.println((listArray[elements]));
            }
            System.out.println("All elements has been displayed!");

            }
        }

    // Method for Checking if List is Empty or Number of elements = 0
    public boolean isListEmpty() {
        return totalElements == 0;
    }
    // Method for Checking is List is full or not. 
    public boolean isListFull() 
    {
        return totalElements == MAX_SIZE_OF_LIST;
    }

    private void newSpace( int newLocation)
    {
        // assert is a method predefined; indicator for index number
    assert (newLocation >=1) && (newLocation <= totalElements +1);
    int newIndicator = newLocation -1;
    int lastIndicator = totalElements -1;
    /**
     * For Shifting Elements to Next Indexes
     */
    for ( int sign = lastIndicator; sign >= newIndicator; sign--)
    listArray[sign +1] = listArray[sign];
    }


}

这是我的驾驶程序

package AlgorithmAndDataStructures;

public class DriverListClass {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ListClass<Integer> listObjectInt = new ListClass<Integer>(10);
        listObjectInt.addElement(12);
        listObjectInt.addElement(17);
        listObjectInt.addElement(90);
        listObjectInt.addElement(53);
        listObjectInt.addSpecific(3, 56);
        listObjectInt.displayListElement();


        // String List
        ListClass<String> listObjectStr = new ListClass<String>(4);
        listObjectStr.addElement("Suman");
        listObjectStr.addElement("Armaan");
        listObjectStr.addElement("Atif");
        listObjectStr.addElement("Tauseef");
        listObjectStr.displayListElement();
    }

}

现在,我希望在ListClass中有一个通用排序方法,可以对通过驱动程序生成的任何类型的列表(字符串、整数、双精度、浮点等)进行排序。

共有2个答案

巫煌
2023-03-14

您需要为列表的元素定义一个比较方法。这通常是通过让元素实现一个接口来完成的,例如Compablepublic class ListClass

蓬威
2023-03-14

将排序方法添加到您的类中

public void sort() {
    Arrays.sort(listArray, 0, totalElements);
}

并更改类ListClass

若要按特定的比较器排序,请在下面添加方法。

public void sort(Comparator<T> comparator) {
    Arrays.sort(listArray, 0, totalElements, comparator);
}
 类似资料:
  • 我有一个对象类产品,如下所示 我想根据价格对产品进行分类。我的数组是 我做了 但问题是部分在error.It不能使用方法。我希望我的arrayList按照product.The价格的整数排序value.But当我将其更改为字符串类型时,我得到了,但它仍然未排序,因为字符串type.Please帮助我

  • 问题内容: 我的数组不包含任何字符串。但是它包含对象引用。每个对象引用都通过toString方法返回名称,id,作者和发布者。 现在,我需要按名称对对象数组进行排序。我知道如何排序,但是我不知道如何从对象中提取名称并对它们进行排序。 问题答案: 你有两种方法可以使用Arrays实用程序类 实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。 在对象所属的类

  • 我有一个JSON数组: 结果为“数据”: 我怎么能有一个升序按“datesurder”? THX

  • 问题内容: 从经验上讲,似乎Python的默认列表排序器在传递元组列表时将按每个元组中的第一个元素进行排序。那是对的吗?如果不是,按元组的第一个元素对元组列表进行排序的正确方法是什么? 问题答案: 它会自动按元组中的第一个元素对元组列表进行排序,然后按第二个元素进行排序,依此类推,tuple([1,2,3])将排在tuple([1,2,4])之前。如果要覆盖此行为,请将一个callable作为第二

  • 我有个问题。我编写了一个简单的抽象类,尝试对该类的数组列表进行排序,并为compareTo函数but list实现了Comparator接口。sort给出了一个错误。请帮忙。下面是一个代码: 在主要课程中,我有: 这给我一个错误,不会排序列表。什么是问题?我应该在扩展类中扩展或实现一些东西吗?当然,我有2类扩展抽象天线类。

  • 我有“MainClass”类的对象列表,它包含“Question”类的对象列表,它包含Option类的对象列表。如何按“Id”对“MainClass”类列表进行排序,以及按“Id”对“Option”类列表进行排序? 假设,