java - 如何在 Java 中向链表添加项目?

标签 java linked-list

使用比较器和迭代器,我尝试按顺序将对象添加到链接列表中。到目前为止,我有以下内容:

public class ComparatorClass implements Comparator<Integer> {
    public int compare(Integer int1, Integer int2) {
        return int1.compareTo(int2);
    }
}

和:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;

public class OrderedListInheritance implements LinkedList {

    ArrayList<Object> myList = new ArrayList<Object>();

    Comparator comp = new ComparatorClass();

    OrderedListInheritance(Comparator c) {
        this.comp = c;
    }

    @Override
    public void add(Object o) {
        addLast(o);
    }

    @Override
    public void addAtIndex(int index, Object o) {
        Iterator it = getIterator();
        while (it.hasNext()) {
            Object element = it.next();
            if (comp.compare(element, o) < 0) {

        }else if (comp.compare(element, o) == 0) {

        }else{
            myList.add(o);
        }
        }
    }

    @Override
    public void addFirst(Object o) {
        addAtIndex(0, o);
    }

    @Override
    public void addLast(Object o) {
        addAtIndex(myList.size(), o);
    }

    @Override
    public Object get(int index) {
        return myList.get(index);
    }

    @Override
    public Iterator getIterator() {
        Iterator iter = myList.iterator();
        return iter;
    }

    @Override
    public int indexOf(Object o) {
        return myList.indexOf(o);
    }

}

我不确定如何结合使用迭代器和比较器来按顺序将每个元素添加到链接列表中。有人可以帮我理清逻辑吗?

最佳答案

你的比较器是错误的。

比较器的一般契约的一部分是,如果 compare(a, b) 为正,则 compare(b, a) 为负。

如果您传递的比较器不满足比较器契约,您将得到未定义的行为。

关于java - 如何在 Java 中向链表添加项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864493/

相关文章:

java - 如何从服务器获取序列化策略文件的强哈希名称?

java - 我想得到特定的排列组合?

go - 如何打印链表

java - 写入 servlet 流

java - 为什么 Google Eclipse 插件 GWT 编译器无法识别 Ivy 依赖项类路径?

java - Spring Batch 中如何维护数据库连接和事务

c++ - Override = operator linked linked c++ 深拷贝

C语言。如何将字符串添加到链接列表中

c - 插入/打印时的链表段错误

更改链表中的节点