如何移动所选项目以移动到列表顶部

use*_*108 4 java

List<String> strings; // contains "foo", "bar", "baz", "xyz"
Run Code Online (Sandbox Code Playgroud)

如果给定输入,"baz"则函数重新排列(String输入)应该返回字符串

"baz", "foo", "bar", "xyz"
Run Code Online (Sandbox Code Playgroud)

如果给定输入,"bar"则函数重新排列(String输入)应该返回字符串

"bar", "foo", "baz", "xyz"
Run Code Online (Sandbox Code Playgroud)

sst*_*dal 18

首先,删除该项目,然后在位置1再次添加该项目.

List<String> strings;

List<String> rearrange(String input) {
    strings.remove(input);
    strings.add(0,input);
    return strings;
}
Run Code Online (Sandbox Code Playgroud)

  • 既然你的声望已经超过20000了,我很严肃地对待这个评论。对于这样的问题,用代码给出准确的答案是不是很糟糕?如果我删除代码,我的答案真的会更好吗? (2认同)
  • 当你第一次发布你的答案时,这是一个重复的答案.我在评论中提出了解决方案,迈克也用勺子回答了答案.因此,您的答案甚至不需要,因为它没有添加任何新信息,只会使论坛变得杂乱无章.相反,尝试将海报指向正确的方向,以便他们可以学习Java语言.您可以通过强制它们实际读取API来了解可用的方法.如果海报不理解答案,他们可以发布后续评论.让人们用正确方向的指针自己解决问题. (2认同)

小智 7

public static <T> void setTopItem(List<T> t, int position){
    t.add(0, t.remove(position));
}
Run Code Online (Sandbox Code Playgroud)

  • 即使我完全理解你的回答,一些文字也将不胜感激。 (4认同)

Mik*_*uel 6

public static <T> List<T> rearrange(List<T> items, T input) {
  int index = items.indexOf(input);
  List<T> copy;
  if (index >= 0) {
    copy = new ArrayList<T>(items.size());
    copy.add(items.get(index));
    copy.addAll(items.subList(0, index));
    copy.addAll(items.subList(index + 1, items.size()));
  } else {
    return items;
  }
  return copy;
}
Run Code Online (Sandbox Code Playgroud)