1

私が取り組んでいるコーディング演習では、25 個のランダムな整数を生成し、それらを並べ替える関数を使用してリンク リストに挿入しようとしています。これらのタスクを個別に実行する方法は理解していますが、ストリームとして実行してみたいと思います。これは、insertSorted 関数が確実に機能するようにサンプル リストを設定するために私が書いたコードです。

Node.java

class Node<T extends Comparable<T>> {
    T data;
    Node<T> nextNode;

    Node(T data) {
        this(data, null);
    };

    Node(T data, Node<T> nextNode){
        this.data = data;
        this.nextNode = nextNode;
    };

    void setNext(Node<T> next){
        nextNode = next;
    }

}

SortedList.java

import java.util.NoSuchElementException;

class SortedList<T extends Comparable<T>> {
    private Node<T> firstNode;
    private Node<T> lastNode;
    private String name;

    SortedList(String listName){
        name = listName;
        firstNode = lastNode = null;
    }

    void insertSorted(T item){
        if(isEmpty()){
            lastNode = new Node<T>(item);
            firstNode = lastNode;
        } else if(firstNode.data.compareTo(item) > 0){
            firstNode = new Node<T>(item, firstNode);
        }
        else {
            Node<T> compareNode = firstNode;
            while(compareNode.nextNode != null
            && compareNode.nextNode.data.compareTo(item) < 0){
                compareNode = compareNode.nextNode;
            }
            Node<T> itemNode = new Node<T>(item, compareNode.nextNode);
            compareNode.setNext(itemNode);
        }
    }

    private boolean isEmpty() { return firstNode == null; }

    void print() {
        if (isEmpty()){
            System.out.printf("Empty %s%n", name);
            return;
        }

        System.out.printf("%s is: ", name);
        Node<T> current = firstNode;

        while (current != null){
            System.out.printf("%s ", current.data);
            current = current.nextNode;
        }
        System.out.println();
    }

}

Main.java

class Main{
    public static void main(String[] args){

        // sample example
        SortedList<Integer> sample = new SortedList<>("sample list");
        sample.insertSorted(84);
        sample.insertSorted(65);
        sample.insertSorted(134);
        sample.insertSorted(102);
        sample.insertSorted(954);
        sample.insertSorted(755);

        sample.print();
    }
}

次のようなコードを使用して、ストリームからランダムな int の配列を生成できることを知っています。

int[] arr = new SecureRandom().ints(25, 0, 100).toArray();

insertSorted メソッドを使用して、上記の SortedList オブジェクト内にランダムな int ストリームを含めるにはどうすればよいですか?

4

1 に答える 1