Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 根据对象的字符串字段对ArrayList中的对象进行排序_Java_Arraylist - Fatal编程技术网

Java 根据对象的字符串字段对ArrayList中的对象进行排序

Java 根据对象的字符串字段对ArrayList中的对象进行排序,java,arraylist,Java,Arraylist,伙计们! 我正在为大学做一门功课,我被困在某件事上了。我有一个类的层次结构和一个ArrayList,其中存储了来自这些类的对象。我的代码打印出存储在ArrayList中的对象的详细信息,但我必须根据字符串字段打印出来,我不知道怎么做。我需要根据LibraryItem类中的标题字段打印详细信息,并且指定我需要使用Java类库。我看了一些东西,根据我所看到的,我猜我需要使用Comparable,但我不知道它是如何工作的。。。 以下是部分代码: public class LibraryItem {

伙计们! 我正在为大学做一门功课,我被困在某件事上了。我有一个类的层次结构和一个ArrayList,其中存储了来自这些类的对象。我的代码打印出存储在ArrayList中的对象的详细信息,但我必须根据字符串字段打印出来,我不知道怎么做。我需要根据LibraryItem类中的标题字段打印详细信息,并且指定我需要使用Java类库。我看了一些东西,根据我所看到的,我猜我需要使用Comparable,但我不知道它是如何工作的。。。 以下是部分代码:

public class LibraryItem {

        private String title;
        private String itemCode;
        private int timesBorrowed;

...


public void printDetails()
        {
            System.out.println("\nTitle: " + title);
            System.out.println("Item code: " + itemCode);
            System.out.println("Cost: " + cost);
            System.out.println("Times borrowed: " + timesBorrowed);
            System.out.println("On loan: " + onLoan);
        }
}

公共类库
{
私有arraylistitemlist;
公共图书馆()
{
itemList=新的ArrayList();
}
public void printAllDetails()
{
对于(LibraryItem项:itemList)
{
item.printDetails();
}
}
再次在ArrayList中添加CD和DVD对象。提前感谢!

employees.stream().collect(Collectors.summingit(Employee::getSalary))

在这里,employees表示列表。您可以用group by或类似的内容替换SummingIT,Employee是类名,getSalary是需要排序的属性

如需进一步参考,您可以浏览


您可以通过两种方式完成:

  • 使用可比较的接口,该接口将通过实现compareTo方法由LibraryItems类实现
  • 使用比较器接口,这将是一个独立的类和实现比较方法
  • 无论您选择哪种方式,您的实现都类似于:

    public int compare(LibraryItem item1, LibraryItem item2) {//if you are implementing Comparator
         return item1.getTitle().compareTo(item2.getTitle());//if you want to sort item by title
    }
    
    然后在打印列表之前,您可以按如下方式对它们进行排序:

    Collections.sort(itemList, <comparator object>);//if using comparator or you could omit passing comparator object.
    //iterate and print items
    
    Collections.sort(itemList,);//如果使用comparator或,则可以省略传递的comparator对象。
    //迭代并打印项目
    
    上有一个重载,需要一个,您可以使用它

     Collection.sort(items, new Comparator<LibraryItem>{
      @Override
      public int compare(LibraryItem a, LibraryItem b) {
        return a.title.compareTo(b.title);
      }
    }
    
    溪流方式(原始集合未触及)

    收集分类到位(即有副作用)


    因此,您希望通过
    title
    Collections.sort(Comparator.comparing(LibraryItem::getTitle())对
    列表进行排序
    。由于arrayList在Library类中,我猜我需要在那里对它进行排序。但是当我写下您建议的代码时,我发现两个错误。第一个LibraryItem无法解析为变量,第二个方法getTitle()对于类库是未定义的……我不明白为什么:(
    LibraryItem
    是否有方法
    getTitle
    ?@Boris the Spider YesWell,你需要传入实际的
    列表
    我想你也在排序-
    集合。排序(列表,比较器)
    。这是员工工资的总和。这有什么帮助?我只是想帮他做一个示例。作为参考,我引用了url,请在投票前阅读。链接只回答了一个不受欢迎的问题。你的简单示例完全不相关。不要假设我没有仔细阅读你的答案。太详细了-请参阅比较或者,将(…)比作蜘蛛@Boris_above@harshtuna是的,它很棒,但需要java 8。为什么要坚持使用旧版本?只是为了支持java 1.5中难看的企业内容?
    public class Library
    {
        private ArrayList<LibraryItem> itemList;
    
        public Library()
        {
            itemList = new ArrayList<LibraryItem>();
        }
    
        public void printAllDetails()
        {
            for (LibraryItem item: itemList)
            {
                item.printDetails();
            }
        }
    
    public int compare(LibraryItem item1, LibraryItem item2) {//if you are implementing Comparator
         return item1.getTitle().compareTo(item2.getTitle());//if you want to sort item by title
    }
    
    Collections.sort(itemList, <comparator object>);//if using comparator or you could omit passing comparator object.
    //iterate and print items
    
     Collection.sort(items, new Comparator<LibraryItem>{
      @Override
      public int compare(LibraryItem a, LibraryItem b) {
        return a.title.compareTo(b.title);
      }
    }
    
    Collections.sort(items,(item1,item2) -> item1.title.compareTo(item2.title));
    
        itemList.stream()
                .sorted(Comparator.comparing(LibraryItem::getTitle))
                .forEachOrdered(LibraryItem::printDetails);
    
        Collections.sort(itemList, Comparator.comparing(LibraryItem::getTitle));
        for (LibraryItem item : itemList) {
            item.printDetails();
        }