簡體   English   中英

Java比較hashmap與arraylist的比較值

[英]Java compare compare value of hashmap with arraylist

我真的陷在這個問題上。 我不確定這種邏輯是否可行,是否還有其他途徑可以實現我想要的目標?

我正在創建這樣的HashMap。

List<String> data1 = new ArrayList();
data1.add("valid1");
data1.add("valid2");

List<String> data2 = new ArrayList();
data2.add("valid3");
data2.add("valid4");

Map<String,ArrayList> hashList = new HashMap();
hashList.put("one",data1);
hashList.put("two",data2);

因此輸出將如下所示:

{one = [valid1,valid2],兩個= [valid3,valid4]}

但是我正在做的是,我正在讀取文件並將其與哈希圖進行比較

碼:

String line;
String[] token;
try {
    LineIterator it = FileUtils.lineIterator(file,"UTF-8");

    while(it.hasNext()){

    line = it.nextLine();

    token = StringUtils.split(line,(","));

    if(token[1].equalsIgnoreCase( //check if its equal to the value of the hashmap){
    System.out.println("Valid");
        }
    }
}

我的文件看起來像這樣:

test1,valid1,check1
test2,valid3,check2

因此,我想做的是檢查“ token [1]”對哈希表的值是否有效。

先感謝您!

如果要獲取令牌的有效密鑰,則實現目標的最昂貴方法是遍歷哈希密鑰,而不是遍歷該密鑰的數組值,並檢查其中是否有任何字符串與您的條件匹配。

它看起來應該像這樣:

String getValidKey(String token, Map<String, List<String>> hashList)  {
    for (String key: hashList.keySet()) {
        for (String valid: hashList.get(key)) {
            if (valid.equalsIgnoreCase(token)) {
                return key;
            }
        }
    }

    return null;
}

如果您只需要知道令牌是否有效,就足夠了:

boolean isValid(String token, Map<String, List<String>> hashList)  {
    for (List<String> list: hashList.values()) {
        for (String valid: list) {
            if (valid.equalsIgnoreCase(token)) {
                return true;
            }
        }
    }

    return false;
}

將地圖轉換為列表

List<String> list = new ArrayList<String>(map.values());

然后使用

list.contains(token[1])

檢查其是否等於列表內容(即哈希表的值)

ArrayList<String> check;
check = your_hash_map.get(token[1]);
if(check != null){System.out.println("Valid");}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM