首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中按ID号使用链表的升序

Java中按ID号使用链表的升序
EN

Stack Overflow用户
提问于 2019-11-30 03:27:18
回答 3查看 190关注 0票数 0

所以我有一个物品列表,随机分配给它们的ID号。然后将这些项目打印到列表中。我需要能够以升序打印出来。LinkedList类中的构造函数应该调用一个方法来构建测试数据列表。这些应该按排序的顺序添加到LinkedList中。下面是我需要编辑的代码,以使其工作:

代码语言:javascript
复制
public boolean decideToInsert (Makeup ee) {
boolean decision = false;
//code goes here
return decision;

以下是我的链表代码:

代码语言:javascript
复制
package model;
import java.util.LinkedList;
import java.util.ListIterator;

public class MakeupList {

private LinkedList <Makeup> makeList = new LinkedList<>();
public MakeupList(){
    this.createMakeList();
    this.printMakeList();
}
public void createMakeList(){
    makeList.add(new Makeup("Natural Face", "Too Face"));

    for (int i = 0; i<10; i++){
        addMakeup (new Makeup ("Matte Lipstick", "MAC"));
}
}

public void addMakeup (Makeup newMake){
    boolean makeupAdded = false;
    boolean insertDecision = false;
    ListIterator<Makeup> makeIterator = makeList.listIterator();
    while (makeIterator.hasNext()){
        insertDecision = makeIterator.next().decideToInsert(newMake);
        if (insertDecision == true){
            makeList.add(makeIterator.previousIndex(), newMake);
            makeupAdded = true;
            break;
        } 
    }
    if(!makeupAdded){
        makeList.add(newMake);
    }
}
public void printMakeList(){
    ListIterator<Makeup> makeIterator = makeList.listIterator();
    while(makeIterator.hasNext()){
        System.out.println(makeIterator.next().toString());
        }
    }
}

下面是它当前打印输出的示例: Makeup: Natural Face Too Face ID: 1

化妆:哑光唇膏MAC ID: 1

化妆:哑光口红MAC ID: 0

化妆:哑光口红MAC ID: 2

化妆:哑光口红MAC ID: 37

化妆:哑光口红MAC ID: 10

化妆:哑光口红MAC ID: 21

化妆:哑光口红MAC ID: 34

化妆:哑光口红MAC ID: 8

化妆:哑光口红MAC ID: 33

化妆:哑光口红MAC ID: 19

EN

回答 3

Stack Overflow用户

发布于 2019-11-30 05:00:14

你的代码非常复杂。您只需将一个id添加到您的Makeup模型中,并按比较器对java流进行排序。更多细节在这里:java 8, Sort list of objects by attribute without custom comparator

票数 1
EN

Stack Overflow用户

发布于 2019-11-30 03:42:30

尝试使用:

代码语言:javascript
复制
Collections.sort(linkedlistVAR);

在你打印出来之前。:-)

票数 0
EN

Stack Overflow用户

发布于 2019-11-30 03:46:44

我不太明白你的问题。如果Makeup有一个id属性,并且您想要按它排序,请尝试使用print方法开始时的比较器接口进行排序。

示例:makeList.sort(Comparator.nullsFirst(Comparator.comparing(Makeup::getId, Comparator.nullsFirst(naturalOrder()))));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59110088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档