设置列表的第一个元素
set first element of a List
我有以下列表:
private String[] myArray = new String[]{"A","B","C"} ;
List myList = new ArrayList();
for (int i = 0; i < myArray.length; i++) {
myList.add(myArray[i]);
}
有一种方法 returns myList 的一个元素
String returnValue=myMethod();
returnValue 可以是 A 或 B 或 C
returnValue 应该是列表的第一个元素
myList.add(0, returnValue);
问题是如果 returnValue="B" ,myList 变为 {"B","B","C"}.
我可以明确删除 returnValue 并将其再次添加到 myList。但这似乎有点多余,谁能提出更好的设计方法。
我需要的结果是 {"B","A","C"}
据我了解,您希望 returnValue
成为 List
的第一个元素,即更改顺序。
这可以通过使用来实现:
Collections.swap(myList, 0, myList.indexOf(returnValue));
由于这不使用添加或删除,因此可以简化您的整个代码:
List<String> myList = Arrays.asList("A","B","C");
String returnValue=myMethod();
Collections.swap(myList, 0, myList.indexOf(returnValue));
请注意,这会更改其余元素的顺序。如果你想保留所有元素的顺序,但你移动到列表前面的那个(比如 remove
后跟 add
就可以)你需要使用 rotate
:
List<String> myList = Arrays.asList("A","B","C");
String returnValue=myMethod();
Collections.rotate(myList.subList(0, myList.indexOf(returnValue)+1), 1);
但是在大列表上使用swap
会更快,所以如果不需要剩余元素保持原来的顺序,建议使用swap
。
如果我很了解你的问题,你应该使用 set(int index, E element)
方法来替换列表中的给定元素
List.add(index, element)
不会替换 List
中的第一个元素,它会插入并因此移动所有后续元素。您最终会在列表中找到 4 个条目:
{RETURNVALUE, "A","B","C"}
还有一个替换变体:List.set(index, element)
。这样,您将在列表中以 3 个条目结束 uo:
{RETURNVALUE,"B","C"}
如果你想让你的 List
井井有条,可以使用简单的实用方法
Collections.sort(mylist);
根据元素的 compareTo()
方法对您的集合进行排序,在您的情况下这将是一个简单的 String
排序。
如果您的 RETURNVALUE 是 B
并且您已经插入了该元素,那么您最终会得到
{"A","B","B","C"}
我有以下列表:
private String[] myArray = new String[]{"A","B","C"} ;
List myList = new ArrayList();
for (int i = 0; i < myArray.length; i++) {
myList.add(myArray[i]);
}
有一种方法 returns myList 的一个元素
String returnValue=myMethod();
returnValue 可以是 A 或 B 或 C
returnValue 应该是列表的第一个元素
myList.add(0, returnValue);
问题是如果 returnValue="B" ,myList 变为 {"B","B","C"}.
我可以明确删除 returnValue 并将其再次添加到 myList。但这似乎有点多余,谁能提出更好的设计方法。
我需要的结果是 {"B","A","C"}
据我了解,您希望 returnValue
成为 List
的第一个元素,即更改顺序。
这可以通过使用来实现:
Collections.swap(myList, 0, myList.indexOf(returnValue));
由于这不使用添加或删除,因此可以简化您的整个代码:
List<String> myList = Arrays.asList("A","B","C");
String returnValue=myMethod();
Collections.swap(myList, 0, myList.indexOf(returnValue));
请注意,这会更改其余元素的顺序。如果你想保留所有元素的顺序,但你移动到列表前面的那个(比如 remove
后跟 add
就可以)你需要使用 rotate
:
List<String> myList = Arrays.asList("A","B","C");
String returnValue=myMethod();
Collections.rotate(myList.subList(0, myList.indexOf(returnValue)+1), 1);
但是在大列表上使用swap
会更快,所以如果不需要剩余元素保持原来的顺序,建议使用swap
。
如果我很了解你的问题,你应该使用 set(int index, E element)
方法来替换列表中的给定元素
List.add(index, element)
不会替换 List
中的第一个元素,它会插入并因此移动所有后续元素。您最终会在列表中找到 4 个条目:
{RETURNVALUE, "A","B","C"}
还有一个替换变体:List.set(index, element)
。这样,您将在列表中以 3 个条目结束 uo:
{RETURNVALUE,"B","C"}
如果你想让你的 List
井井有条,可以使用简单的实用方法
Collections.sort(mylist);
根据元素的 compareTo()
方法对您的集合进行排序,在您的情况下这将是一个简单的 String
排序。
如果您的 RETURNVALUE 是 B
并且您已经插入了该元素,那么您最终会得到
{"A","B","B","C"}