다음과 같은지도가 있습니다 : HashMap<Person, List<Items>>
. 목록에서 몇 가지 항목을 제거하고 싶습니다. 제거하려는 특정 항목은 다른 목록에 저장됩니다. 가장 효율적인 방법으로 다른 목록의 항목과 일치하는지도의 목록 항목을 어떻게 제거 할 수 있습니까?지도의 목록에서 특정 개체를 제거하는 방법은 무엇입니까?
1
A
답변
1
다음은 상황을 설명하는 전체 예제입니다. hashcode and equals
은 Item
클래스에 구현되었습니다. 이는 제공된 항목 목록이 소유 항목 목록과 동일한 지 여부를 확인하기 위해 removeAll
메서드에서 equals를 사용하기 때문에 중요합니다. 지도에서 모든 키를 통해
Item.java
public class Item {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Item(String name) {
super();
this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Item other = (Item) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
Person.java
public class Person {
private String name;
public Person(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
응용 프로그램
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class StackTest {
public static void main(String[] args) {
Person person = new Person("Logan");
Person person2 = new Person("Jean");
Person person3 = new Person("Gambit");
Person person4 = new Person("Storm");
Item item1 = new Item("Claws");
Item item2 = new Item("Jacket");
Item item3 = new Item("Cards");
Item item4 = new Item("Cape");
List<Item> items = new ArrayList<Item>();
items.add(item1);
items.add(item2);
items.add(item3);
items.add(item4);
List<Item> loganItems = new ArrayList<Item>(items);
List<Item> jeanItems = new ArrayList<Item>(items);
List<Item> gambitItems = new ArrayList<Item>(items);
List<Item> stormItems = new ArrayList<Item>(items);
Map<Person, List<Item>> people = new HashMap<Person,List<Item>>();
people.put(person, loganItems);
people.put(person2, jeanItems);
people.put(person3, gambitItems);
people.put(person4, stormItems);
printMap(people);
List<Item> removeItems = new ArrayList<Item>();
Item rItem1 = new Item("Cards");
Item rItem2 = new Item("Jacket");
removeItems.add(rItem1);
removeItems.add(rItem2);
removeItem(people, person, removeItems);
printMap(people);
}
public static void removeItem(Map<Person,List<Item>> map, Person p, List<Item> items){
map.get(p).removeAll(items);
}
public static void printMap(Map<Person, List<Item>> map){
for(Entry<Person,List<Item>> entry:map.entrySet()){
System.out.println(entry.getKey().getName() + " items:");
for(Item item: entry.getValue()){
System.out.println(item.getName());
}
}
}
}
+0
이 포괄적 인 답변을 제공해 주셔서 감사합니다. equals와 hashcode로 조금 어려움을 겪었지만 지금은 잘 작동합니다. :) – amph
1
목록은 이미 방법 : List.removeAll(Collection<?> collection)
을 제공합니다.
ArrayList
에 대한 O (1) 연산 대 O (n) 요소이므로,이 시나리오에서는 LinkedList
을 사용하는 것이 좋습니다.
1
HashMap<Person, List<Items>> map = // Your map
for(Person p:map.keySet()) {
map.get(p).removeAll(removeList);
}
이렇게하면됩니다.
관련 문제
- 1. 자바에서 연결된 목록에서 개체를 제거하는 방법은 무엇입니까?
- 2. 목록에서 개체를 올바르게 제거하는 방법은 무엇입니까?
- 3. 문자열 개체를 목록에서 제거하는 방법은 무엇입니까?
- 4. 목록에서 개체를 제거하는 방법을
- 5. 중첩 목록에서 특정 개체를 찾는 방법은 무엇입니까?
- 6. 목록에서 특정 문자를 제거하는 방법은 무엇입니까?
- 7. 특정 인덱스에 개체를 추가하고 NSMutableArray에서 다른 개체를 제거하는 방법은 무엇입니까?
- 8. 목록에서 항목을 제거하는 방법은 무엇입니까?
- 9. 목록에서 항목을 제거하는 방법은 무엇입니까?
- 10. 캔버스에서 개체를 제거하는 방법은 무엇입니까?
- 11. 캔버스에서 개체를 제거하는 방법은 무엇입니까?
- 12. 지도의 특정 위치에 이미지를 추가하는 방법은 무엇입니까?
- 13. AS3, 목록에서 개체를 제거하는 중 오류가 발생했습니다.
- 14. 목록에서 많은 수의 개체를 제거하는 방법
- 15. 상위 목록에서 개체를 제거하는 것이 가장 좋습니다.
- 16. C#의 목록에서 개체를 제거하는 방법
- 17. 목록에서 다른 목록에없는 개체를 제거하는 방법 R
- 18. "java.util.ConcurrentModificationException"일부 개체를 목록에서 제거하는 중
- 19. MapView에서 특정 ItemizedOverlay를 제거하는 방법은 무엇입니까?
- 20. 여러 목록에서 공통 개체를 찾는 방법은 무엇입니까?
- 21. 개체 목록에서 개체를 찾는 방법은 무엇입니까?
- 22. 목록에서 타원 개체를 클릭하는 방법은 무엇입니까?
- 23. 다트 목록에서 유사한 요소를 제거하는 방법은 무엇입니까?
- 24. OCaml에서 목록에서 요소를 제거하는 표준 방법은 무엇입니까?
- 25. 그 목록에서 빠진 항목을 제거하는 방법은 무엇입니까?
- 26. 삽입 된 목록에서 항목을 제거하는 방법은 무엇입니까?
- 27. 온천 목록에서 항목을 제거하는 방법은 무엇입니까?
- 28. 이중 연결된 목록에서 노드를 제거하는 방법은 무엇입니까?
- 29. 비슷한 문자열을 목록에서 제거하는 방법은 무엇입니까?
- 30. OneToMany 목록에서 entite를 올바르게 제거하는 방법은 무엇입니까?
반복 처리 후 사용 리스트로부터 removeAll 메소드를 취득합니다. – Damian0o