2014-02-11 3 views
0

나는 내 코드는은 HashMap의

Map<String, List<String>> map = new HashMap<String, List<String>>(); 

에서 마지막 요소를 제거하기 위해 노력하고 있습니다에서 마지막 요소를 제거

StringTokenizer stheader = new StringTokenizer(value.toString(),","); 
while (stheader.hasMoreTokens()){ 
    String tmp = stheader.nextToken(); 
    header.add(tmp); 
    System.out.println("tmp"+header); 
    map.put(tmp, new ArrayList<String>()); 
    } 
System.out.println(map.size()); 

출력 :

tmp[Sepal_Length, Sepal_Width, Petal_Length, Petal_Width, Class] 
map{Petal_Width=[], Class=[], Petal_Length=[], Sepal_Length=[], Sepal_Width=[]} 

내가 키 클래스 [을 제거하려면 ]는 map 또는 tmp입니다.

.remove()을 사용해 보았지만 아무 것도 반영되지 않았습니다.

답변

1

두 컬렉션이 효율적이므로, "Class" 요소를 제거하려면 모두에서해야합니다. 당신이 걱정하고 header을 가정하는 것은 List<String> 무엇인지 모두 컬렉션 tmp마지막 요소를 제거 항상 인 경우, 다음과 같이해야합니다 :

String keyToRemove = header.remove(header.size()-1); 
map.remove(keyToRemove); 
4

HashMap에는 주문이 없으므로 마지막 항목을 제거 할 수 없습니다. 삽입 순서는 LinkedHashMap을 사용하십시오.

1

HashMap이 마련되지 않는이 따라 요소입니다 하지만 인덱스에 따라 요소를 검색 할 수 있지만 key에 따라 요소를 검색 할 수 있으므로 HashMap을 사용해야하는 경우 증분 인덱스를 키에 추가해야하므로 인덱스를 하나씩 늘린 다음 새 요소를 추가 할 때 HashMap의 키 :

Map<Map<int,String>, List<String>> map = new HashMap<Map<int,String>, List<String>>(); 
int index = 0; 
StringTokenizer stheader = new StringTokenizer(value.toString(),","); 
while (stheader.hasMoreTokens()){ 
    String tmp = stheader.nextToken(); 
    header.add(tmp); 
    System.out.println("tmp"+header); 
    Map<int, String> temp_map = new HashMap<int, String>(); 
    temp_map.put(index, tmp); 
    index ++; 
    map.put(temp_map, new ArrayList<String>()); 
    } 

마지막으로 색인의 값을 확인할 수 있으며 마지막 요소의 색인이됩니다.

1

@Unmesha SreeVeni : HashMap은 요소 삽입 순서를 유지하지 않으므로 마지막 요소를 삭제하려면 LinkedHashMap을 사용하십시오.