LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

public class Main {
    public static class Element {
        protected int value;

        Element(int value) {
            this.value = value;
        }

        List<Element> asHeadAndTail(List<Element> parent) {
            return parent.subList(parent.indexOf(this), parent.size());
        }
    }

    public static void main(String[] args) {
        List<Element> list = new ArrayList<>();
        list.add(new Element(10));
        list.add(new Element(20));
        list.add(new Element(30));
        list.add(new Element(40));
        list.add(new Element(50));

        var head = list.get(3).asHeadAndTail(list);
        head.add(0, new Element(35));
        head.add(2, new Element(45));

        for (var item : list) {
            System.out.println(item.value);
/*
10
20
30
35 Если нужно поведение не добавляющие здесь 35, то это уже не список с элементами должен быть, а ячейки как в лиспе, если не нужно изменять оригинал то нужно сделать копию в методе. 
40
45
50
*/
        }
    }
}

Исправление MOPKOBKA, :

public class Main {
    public static class Element {
        protected int value;

        Element(int value) {
            this.value = value;
        }

        List<Element> asHeadAndTail(List<Element> parent) {
            return parent.subList(parent.indexOf(this), parent.size());
        }
    }

    public static void main(String[] args) {
        List<Element> list = new ArrayList<>();
        list.add(new Element(10));
        list.add(new Element(20));
        list.add(new Element(30));
        list.add(new Element(40));
        list.add(new Element(50));

        var head = list.get(3).asHeadAndTail(list);
        head.add(0, new Element(35));
        head.add(2, new Element(45));

        for (var item : list) {
            System.out.println(item.value);
/*
10
20
30
35 Если нужно поведение не добавляющие здесь 35, то это уже не список с элементами должен быть, а ячейки как в лиспе
40
45
50
*/
        }
    }
}

Исправление MOPKOBKA, :

public class Main {
    public static class Element {
        protected int value;

        Element(int value) {
            this.value = value;
        }

        List<Element> asHeadAndTail(List<Element> parent) {
            return parent.subList(parent.indexOf(this), parent.size());
        }
    }

    public static void main(String[] args) {
        List<Element> list = new ArrayList<>();
        list.add(new Element(10));
        list.add(new Element(20));
        list.add(new Element(30));
        list.add(new Element(40));
        list.add(new Element(50));

        var head = list.get(3).asHeadAndTail(list);
        head.add(0, new Element(35));
        head.add(2, new Element(45));

        for (var item : list) {
            System.out.println(item.value);
/*
10
20
30
35
40
45
50
*/
        }
    }
}

Исправление MOPKOBKA, :

public class Main {
    public static class Element {
        protected int value;

        Element(int value) {
            this.value = value;
        }

        List<Element> asHeadAndTail(List<Element> parent) {
            return parent.subList(parent.indexOf(this), parent.size());
        }
    }

    public static void main(String[] args) {
        List<Element> list = new ArrayList<>();
        list.add(new Element(10));
        list.add(new Element(20));
        list.add(new Element(30));
        list.add(new Element(40));
        list.add(new Element(50));

        var head = list.get(3).asHeadAndTail(list);
        head.add(0, new Element(35));
        head.add(2, new Element(45));

        for (var item : list) {
            System.out.println(item.value);
        }
    }
}

Исходная версия MOPKOBKA, :

public class Main {
    public static class Element {
        protected List<Element> parent;
        protected int value;

        Element(List<Element> parent, int value) {
            this.parent = parent;
            this.value = value;
        }

        List<Element> asHeadAndTail() {
            return parent.subList(parent.indexOf(this), parent.size());
        }
    }

    public static void main(String[] args) {
        List<Element> list = new ArrayList<>();
        list.add(new Element(list, 10));
        list.add(new Element(list, 20));
        list.add(new Element(list, 30));
        list.add(new Element(list, 40));
        list.add(new Element(list, 50));

        var head = list.get(3).asHeadAndTail();
        head.add(0, new Element(head, 35));
        head.add(2, new Element(head, 45));

        for (var item : list) {
            System.out.println(item.value);
        }
    }
}