删除行后如何保证具有连续数字字段的列?

时间:2018-08-31 06:25:32

标签: java database typescript row

有一个表 items ,其中的列 position (int)不是PK,执行任何操作后如何获得从1到项目数的始终连续的值项目(行)删除?

Java TypeScript 方法)

1 个答案:

答案 0 :(得分:1)

您可以使用一种非常简单的方法,只需移除Item并重新排列其余Item s的位置

这可以通过采用List<Item>和要删除的Item的方法来完成。

public class Main {

    public static void main(String[] args) {
        List<Item> items = new ArrayList<Item>();

        // put some test items into the list
        Item first = new Item(1, 1);
        Item second = new Item(2, 2);
        Item third = new Item(3, 3);
        Item fourth = new Item(4, 4);
        Item fifth = new Item(5, 5);
        items.add(first);
        items.add(second);
        items.add(third);
        items.add(fourth);
        items.add(fifth);

        // print the list once:
        System.out.println("Original list:");

        items.forEach((Item item) -> {
            System.out.println(item.toString());
        });

        // remove one item using the rearranging method
        removeItemFrom(third, items);

        // print the result
        System.out.println("After rearrangement:");

        items.forEach((Item item) -> {
            System.out.println(item.toString());
        });
    }

    public static void removeItemFrom(Item itemToBeRemoved, List<Item> items) {
        // first remove the desired item
        items.remove(itemToBeRemoved);

        // then sort (if it is already sorted, skip this step)
        // items.sort(/*otherwise sort with a Comparator of your choice*/);

        // define a counter
        int positioner = 1;

        // give every item in the sorted list a new position
        for(Item item : items) {
            // re-set position with a counter
            item.setPosition(positioner);
            positioner++;
        }
    }
}

我希望这会有所帮助。