List集合删除元素

xls丶 2017-10-29 05:30:56
给你一个List集合,再指定一个整数n,第一次删除list集合第n个数,删完之后在第n个数在重新数到n,再接着删除,直至删除完整个list集合的元素?这怎么做,求解
public void delete(List<Interger> list,int n){}
...全文
940 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
MubaiClink 2017-12-05
  • 打赏
  • 举报
回复
import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < 5; i++) {
			list.add(i);
		}
		int n = 17;

		delete(list, n);
	}

	public static void delete(List<Integer> list, int n) {
		int temp = 0;
		if (list.size() != 0) {
			if (n > list.size()) {
				temp = n % list.size();
				System.out.println("多出:"+temp);
				list.remove(temp);
				System.out.println("删除下标:"+temp+"成功");
			}else{
				System.out.println("并没有多余数,直接删除");
				list.remove(n);
			}
		}
	}
}
各位大神看看有没有什么问题,我是培训机构出来的所以做的简单一点,希望不要吐槽啦。
MubaiClink 2017-12-05
  • 打赏
  • 举报
回复
各位大神看看有没有什么问题,我是培训机构出来的所以做的简单一点,希望不要吐槽啦
蜗牛2号 2017-12-05
  • 打赏
  • 举报
回复
import java.util.ArrayList; import java.util.List; //给你一个List集合,再指定一个整数n, //第一次删除list集合第n个数,删完之后在第n个数在重新数到n, //再接着删除,直至删除完整个list集合的元素?这怎么做,求解 public class T2 { public static void main(String[] args) { T2.remove(1, T2.getList(10)); } //输入集合长度来获取测试集合 public static List<Integer> getList(int n) { List<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < n; i++) { list.add(i); } return list; } //解决方案 public static void remove(int n,List<Integer> list) { System.out.println(list); if(n <= list.size()) {//如果要对象的位数小于等于当前集合的长度,则执行移除操作 list.remove(n-1);//按角标移除集合元素 System.out.println(list.size());//查看移除结果 T2.remove(2*n, list);//每次移除当前角标的二倍 } } } [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 9 [1, 2, 3, 4, 5, 6, 7, 8, 9] 8 [1, 3, 4, 5, 6, 7, 8, 9] 7 [1, 3, 4, 6, 7, 8, 9]
蜗牛2号 2017-12-05
  • 打赏
  • 举报
回复
import java.util.ArrayList; import java.util.List; //给你一个List集合,再指定一个整数n, //第一次删除list集合第n个数,删完之后在第n个数在重新数到n, //再接着删除,直至删除完整个list集合的元素?这怎么做,求解 public class T2 { public static void main(String[] args) { T2.remove(2, T2.getList(10)); } public static List<Integer> getList(int n) { List<Integer> list = new ArrayList<Integer>(); for (int i = 0; i < n; i++) { list.add(i); } System.out.println(list); return list; } public static void remove(int n,List<Integer> list) { list.remove(n-1); System.out.println(list); while(n <= list.size()) { T2.remove(n, list); } } }
xzxmustwin 2017-11-29
  • 打赏
  • 举报
回复
楼上的确定这个问题不是约瑟夫环?csdn没落了。。这么经典的问题没人说
逗比123号 2017-11-29
  • 打赏
  • 举报
回复

		int index = 0;
		while(list.size()>1) {
			index = (index+n-1)%list.size(); //n自己确定
			list.remove(index);
		}
Z丶文杰 2017-11-29
  • 打赏
  • 举报
回复
public static void main(String[] args) {
List<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < 99; i++) {
list.add(i);
}
deleteList(list, 3);
for (int z : list) {
System.out.println(z);
}
System.out.print(list.size() + "------");


}

public static void deleteList(List<Integer> list, int n) {
int temp;
int x = list.size();
for (int i = 0; i < x; i++) {
if (n < list.size()) {
list.remove(n);
} else {
temp = n % list.size();
list.remove(temp);
}
}
}

这样行不行?
Clumsy__Cat 2017-11-23
  • 打赏
  • 举报
回复
引用 14 楼 qq_38562970 的回复:

public class ListTest {
	private int i;
	public static int num = 7;
	public static void main(String[] args) {
		List<Integer> list = new LinkedList<Integer>();
		for (int index = 1; index <= 50; index++) {
			list.add(index);
			if (50 == index) {
				delete(list, 7);
			}
		}
	}
	// List集合删除
	public static void delete(List<Integer> list, int n) {
		System.out.println("list集合长度==>" + list.size() + "\tn的值==>" + n);
		if (list.size() != 0) {
			if (n <= list.size()) {
				//System.out.println("n的值==>" + n);
				System.out.println(list.get(n - 1) + "被删除了");
				list.remove(n - 1);
				n = num + n - 1;
			} else {
				n = n % list.size();
				if (n == 0) {
					//System.out.println("n的值==>" + n);
					System.out.println(list.get(list.size() - 1) + "被删除了");
					list.remove(list.size() - 1);
				} else {
					//System.out.println("n的值==>" + n);
					System.out.println(list.get(n - 1) + "被删除了");
					list.remove(n - 1);
				}
				n = num + n - 1;
			}
			delete(list, n);
		} else {
			System.out.println("删除完毕:list.size() = " + list.size());
		}
	}
}
看一下这个,亲测可用
有必要用递归吗?我宁愿用循环
fcyh 2017-11-06
  • 打赏
  • 举报
回复
public class ListTest {
    private int i;
    public static int num = 7;
    public static void main(String[] args) {
        List<Integer> list = new LinkedList<Integer>();
        for (int index = 1; index <= 50; index++) {
            list.add(index);
            if (50 == index) {
                delete(list, 7);
            }
        }
    }
    // List集合删除
    public static void delete(List<Integer> list, int n) {
        System.out.println("list集合长度==>" + list.size() + "\tn的值==>" + n);
        if (list.size() != 0) {
            if (n <= list.size()) {
                //System.out.println("n的值==>" + n);
                System.out.println(list.get(n - 1) + "被删除了");
                list.remove(n - 1);
                n = num + n - 1;
            } else {
                n = n % list.size();
                if (n == 0) {
                    //System.out.println("n的值==>" + n);
                    System.out.println(list.get(list.size() - 1) + "被删除了");
                    list.remove(list.size() - 1);
                } else {
                    //System.out.println("n的值==>" + n);
                    System.out.println(list.get(n - 1) + "被删除了");
                    list.remove(n - 1);
                }
                n = num + n - 1;
            }
            delete(list, n);
        } else {
            System.out.println("删除完毕:list.size() = " + list.size());
        }
    }
}
learning-forever 2017-11-03
  • 打赏
  • 举报
回复

public class ListTest {
	private int i;
	public static int num = 7;
	public static void main(String[] args) {
		List<Integer> list = new LinkedList<Integer>();
		for (int index = 1; index <= 50; index++) {
			list.add(index);
			if (50 == index) {
				delete(list, 7);
			}
		}
	}
	// List集合删除
	public static void delete(List<Integer> list, int n) {
		System.out.println("list集合长度==>" + list.size() + "\tn的值==>" + n);
		if (list.size() != 0) {
			if (n <= list.size()) {
				//System.out.println("n的值==>" + n);
				System.out.println(list.get(n - 1) + "被删除了");
				list.remove(n - 1);
				n = num + n - 1;
			} else {
				n = n % list.size();
				if (n == 0) {
					//System.out.println("n的值==>" + n);
					System.out.println(list.get(list.size() - 1) + "被删除了");
					list.remove(list.size() - 1);
				} else {
					//System.out.println("n的值==>" + n);
					System.out.println(list.get(n - 1) + "被删除了");
					list.remove(n - 1);
				}
				n = num + n - 1;
			}
			delete(list, n);
		} else {
			System.out.println("删除完毕:list.size() = " + list.size());
		}
	}
}
看一下这个,亲测可用
javafor点com 2017-11-02
  • 打赏
  • 举报
回复
这里有一篇 关于 ArrayList 的源码 你可以学下 go javafor.com
  • 打赏
  • 举报
回复
如果是链表,那么就是模n同余关系,LinkedList可以直接通过remove(int index)删除,只需要进行一次同余转换就行,毕竟Java有写好的API
Winter_LOL 2017-11-02
  • 打赏
  • 举报
回复
我上面代码漏了个加n的代码
Winter_LOL 2017-11-02
  • 打赏
  • 举报
回复
public void delete(List list,int n) {
		while(list.size()!=0) {
			int temp=list.size();
			if((n%temp)!=0) {
				list.remove(n-1);
			}else {
				list.remove(temp-1);
			}
		}
不知道这样可否?
yrftc 2017-11-02
  • 打赏
  • 举报
回复
终于知道了 谢谢
qq_39912309 2017-10-31
  • 打赏
  • 举报
回复
 public static void delete(List<Integer> list, int n) {
        int temp = 0;
        int temp2 = 0;
        if (list.size() != 0) {
            if (n <= list.size()) {
                list.remove(n);
                temp2 = 2 * n ;
            } else {
                
                temp = n % list.size();
                list.remove(temp);
                temp2 = temp + n;
            }
            delete(list, temp2);
        } else {
            System.out.println("list.size() = " + list.size());
        }
    }
不知道是不是满足你的要求?
xls丶 2017-10-31
  • 打赏
  • 举报
回复
你这样明显不行啊,这样写的没删几个就下标就越界了,题目的意思是如果n数到了list集合末尾,则从头开始数到n,删除
maradona1984 2017-10-30
  • 打赏
  • 举报
回复
引用 3 楼 ribut9225 的回复:
n的值超出list范围怎么处理?
个人觉得这个题应该不是说的list,而是一个首尾相连的链表,这样就是一个很经典的问题的
ribut9225 2017-10-30
  • 打赏
  • 举报
回复
n的值超出list范围怎么处理?
xls丶 2017-10-30
  • 打赏
  • 举报
回复
引用 5 楼 qq_38204653 的回复:
[quote=引用 3 楼 ribut9225 的回复:] n的值超出list范围怎么处理?
比如list集合有5个元素,n为8,那么则删除的是第3个元素,[/quote] 面试叫我编这个,没编出来
加载更多回复(2)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧