2013-09-27 3 views
1

나는 각 키 say k에 대해 v1, v2라고하는 두 가지 문자열 유형 값을 포함하는 목록을 유지해야합니다. 값 V1 및 V2를 포함하는 문자열을 포함하고 선택 후에 정확한 값을 가져 오지 분열()를 사용하여 함께이 더 좋은 옵션입니까?

  1. 해시 맵 나은 옵션을 무엇. 두 개의 문자열 변수

나는 안드로이드 응용 프로그램을 만드는 오전의 값을 포함하는 배열, 성능에 대한 그래서 그냥 우려와

  • 해시 맵. 두 번째 경우에는 직접 액세스 할 수 있지만 각 값을 다른 배열을 포함 할 것이다 (내가 알지는 않지만 복잡한 방식으로 나타납니다), 첫 번째 경우에는 v.split (",") [0 ]

    안내해주십시오.

    Map<String,String[]> listMap= new HashMap<String, String[]>(); 
    Map<String,String> listMap1= new HashMap<String, String>();; 
    
    for (int i = 1; i < tl.getChildCount(); i++) { 
        TableRow row = (TableRow) tl.getChildAt(i); 
        COLOR_TABLE clr = (COLOR_TABLE) row.getTag(); 
    
        if (clr == COLOR_TABLE.green) { 
         //comp 
         String x1=listMap1.get(((TextView) row.getChildAt(0)).getText()); 
         String x2=listMap.get(((TextView) row.getChildAt(0)).getText()); 
         // now i have to add two string values in a list seperately 
        } 
    } 
    
  • +0

    구현의 예로 일부 코드를 제공 할 수 있습니까? – Rogue

    +1

    v1과 v2가있는 간단한 개체를 사용하고 싶지 않은 이유는 무엇입니까? –

    +0

    내가 원하는 코드를 추가했습니다. – HimanshuR

    답변

    5

    절대 사용하지 마십시오! 때때로 느릴 수도 있고 그 목적을 위해 만들어지지 않을 수도 있습니다. 당신이 더 잘 할 수 물론

    public class Pair<A, B> { 
    
        public A first; 
        public B second; 
    
        public Pair(A first, B second) { 
        this.first = first; 
        this.second = second; 
        } 
    } 
    

    , 접근로 등 : 당신이 그것을 지향 이상의 오브젝트를 수행하려는 경우

    당신은 일반적인 쌍 클래스를 사용할 수 있습니다.

    +0

    일부 문자열 만 알고있는 제네릭 클래스 – HimanshuR

    +0

    문자열에 익숙해졌습니다. 사실 그렇지만 문자열이 있습니다. . 재사용 성! – luiso1979

    +0

    upvotes ..로 인해이 ans을 (를) 허용했으며 지금은 generic class – HimanshuR

    1

    내가 분할 기능이 O (문자열 크기)의 복잡성으로 실행 생각하지만, 배열의 요소는 문자열 배열보다 훨씬 느립니다 일정한

    1

    이다 도달, 또한 더 복잡한 코드가 있습니다. (단 하나의 실제 측정까지는 성능 차이에 대해 확신하기가 어렵다는 점에주의하십시오.)

    그러나 나라면, 가장 간단한 해결책을 사용하고 개체를 사용합니다. 나중에 프로그램이 너무 느려지고 측정 결과가 성능 병목 현상으로 나타나면 다른 솔루션도 고려할 것입니다.

    0

    배열 또는 사용자 지정 클래스를 값으로 사용하는 것이 디자인 관점에서 선호되는 방법입니다. 두 문자열을 하나의 문자로 구분하여 팩킹하는 경우 첫 번째 문자열에 동일한 문자가 포함되지 않도록해야합니다. 그렇지 않으면 포함 할 수 있도록 어떤 종류의 이스케이프 메커니즘을 사용해야합니다.

    성능에 대한 모든 옵션을 테스트하고 최상의 옵션을 선택하는 경우에만 사용하십시오. 결과는 저장하는 데이터와 라이브러리가 구현 된 방식에 따라 달라 지므로 예측하기가 어렵습니다. 예를 들어, 독립적 인 문자열에 대한 참조를 저장하는 구조체는 잠재적으로 액세스시 캐시 미스가 발생합니다. 문자열 분할 또는 비슷한 방법으로 캐시 미스보다 비용이 적게 든다면 더 빠릅니다.

    관련 문제