最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Map和Set練習(xí)項(xiàng)目實(shí)例代碼

 更新時(shí)間:2024年11月13日 09:16:23   作者:小川_wenxun  
這篇文章主要給大家介紹了關(guān)于Java中Map和Set練習(xí)項(xiàng)目的相關(guān)資料,首先介紹了如何使用map來(lái)統(tǒng)計(jì)字符串?dāng)?shù)組中每個(gè)字符串的出現(xiàn)次數(shù),然后討論了如何使用set來(lái)找出只出現(xiàn)一次的數(shù)字,最后提出了一個(gè)解決壞鍵盤(pán)打字問(wèn)題的思路,需要的朋友可以參考下

查找字母出現(xiàn)的次數(shù)

這道題的思路在后面的題目過(guò)程中能用到,所以先把這題給寫(xiě)出來(lái)

題目要求:給出一個(gè)字符串?dāng)?shù)組,要求輸出結(jié)果為其中每個(gè)字符串及其出現(xiàn)次數(shù)。

思路:我們可以把數(shù)組里的字符串按順序放進(jìn)map中,對(duì)于沒(méi)被放進(jìn)去過(guò)的字符串,放進(jìn)去次數(shù)為1,之前被放進(jìn)過(guò)去的字符串,那就在其上重新放入,并把次數(shù)重新加1.

舉個(gè)例子,輸出的內(nèi)容是:

"this", "dog", "cat", "cat", "this", "dog"

現(xiàn)在是把每個(gè)元素放進(jìn)去,在沒(méi)遇到一樣數(shù)據(jù)之前的過(guò)程,如是上面所示,如果遇到了一樣的數(shù)據(jù), 

這個(gè)操作看起來(lái)可能是把第二個(gè)cat放進(jìn)去了,但是實(shí)際上是把cat重新輸入了,然后把Key值輸入為2了。因?yàn)閙ap其中節(jié)點(diǎn)的樣子如上圖所示。

代碼部分如下

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test {
    public static Map<String, Integer> countWords(String[] words){
        Map<String, Integer> map = new HashMap<>();
        for(String word : words){
            if(map.get(word) == null){
                map.put(word, 1);
            }else {
                int val = map.get(word);
                map.put(word, val+1);
            }
        }
        return map;
    }

    public static void main(String[] args) {
        String[] words = {"this", "dog", "cat", "cat", "this", "dog"};
        Map<String, Integer> map = countWords(words);
        Set<Map.Entry<String, Integer>> entryset = map.entrySet();
        for (Map.Entry<String, Integer> entry : entryset){
            System.out.println("Key: " + entry + "  Val: " + entry.getKey());
        }
    }
}

只出現(xiàn)一次的數(shù)字

題目鏈接:只出現(xiàn)一次的數(shù)字 - 力扣(LeetCode)

題目描述:給一個(gè) 非空 整數(shù)數(shù)組 nums ,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。

思路:這里的思路和上面的 查找字母出現(xiàn)的次數(shù) 有些像。依次把元素放到set中,如果set中沒(méi)有該元素,就把該元素放進(jìn)去,如果有,就把這個(gè)元素從set中刪去。最后輸出set中的元素

以 {1,2,3,4,1,2,3} 為例,當(dāng)?shù)谝淮瓮锓牛瑳](méi)有遇到重復(fù)的元素時(shí),如下圖

按照數(shù)組的順序,接著向下放,就會(huì)遇到重復(fù)的元素,這時(shí)候就要把set中的元素給刪除了

 后面的2,3也要依次從set中刪除。

public static int singleNumber(int[] nums){
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            if(set.contains(nums[i])){
                set.remove(nums[i]);
            }else{
                set.add(nums[i]);
            }
        }

        for (int i = 0; i < nums.length; i++) {
            if(set.contains(nums[i])){
                return nums[i];
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4,1,2,3};
        System.out.println(singleNumber(array));
    }

運(yùn)行結(jié)果如下

壞鍵盤(pán)打字

題目鏈接:

題目描述:舊鍵盤(pán)上壞了幾個(gè)鍵,于是在敲一段文字的時(shí)候,對(duì)應(yīng)的字符就不會(huì)出現(xiàn)?,F(xiàn)在給出應(yīng)該輸入的一段文字、以及實(shí)際被輸入的文字,請(qǐng)你列出肯定壞掉的那些鍵。

輸入在兩行中分別給出應(yīng)該輸入的文字、以及實(shí)際輸入的文字

按照發(fā)現(xiàn)順序,在一行中輸出壞掉的鍵。其中英語(yǔ)字母只輸出大寫(xiě),每個(gè)壞鍵只輸入一次。

示例

輸入

7_This_is_a_test

_hs_s_a_es

輸出

7TI

題目思路:該題的思路在于如何找出壞鍵,這里提供一種思路,先把實(shí)際輸入的數(shù)據(jù)放到set中,然后再把應(yīng)該輸入的文字遍歷一遍,如果其中有set中沒(méi)有的數(shù)據(jù),那些沒(méi)有的數(shù)據(jù)便是壞掉的鍵。

public static void func(String str1, String str2){
        //將字符串大寫(xiě)
        str1 = str1.toUpperCase();
        str2 = str2.toUpperCase();

        HashSet<Character> setAct = new HashSet<>();
        for (int i = 0; i < str2.length(); i++) {
            char ch = str2.charAt(i);
            setAct.add(ch);
        }

        for (int i = 0; i < str1.length(); i++) {
            char ch = str1.charAt(i);
            if(!setAct.contains(ch)){

                System.out.print(ch);
            }
        }
    }

    public static void main(String[] args) {
        func("7_This_is_a_test", "_hs_s_a_es");
    }

這樣的代碼還是存在問(wèn)題,沒(méi)辦法把其中重復(fù)出現(xiàn)的元素給消去,輸出的結(jié)果是

現(xiàn)在問(wèn)題變成了如何去重,這部分不難能想到,我們可以創(chuàng)建一個(gè)setBroken來(lái)存放已經(jīng)查找到的壞鍵,如果set和setBroken中都沒(méi)有這個(gè)元素才打印.

public class Test {
    public static void func(String str1, String str2){
        str1 = str1.toUpperCase(Locale.ROOT);
        str2 = str2.toUpperCase(Locale.ROOT);

        HashSet<Character> setAct = new HashSet<>();
        for (int i = 0; i < str2.length(); i++) {
            char ch = str2.charAt(i);
            setAct.add(ch);
        }

        //第一步是把不同的數(shù)給挑出來(lái),然后對(duì)于重復(fù)輸出的數(shù)據(jù)給去重
        HashSet<Character> setBroken = new HashSet<>();
        for (int i = 0; i < str1.length(); i++) {
            char ch = str1.charAt(i);
            if(!setAct.contains(ch) && !setBroken.contains(ch)){
                setBroken.add(ch);
                System.out.print(ch);
            }
        }
    }

    public static void main(String[] args) {
        func("7_This_is_a_test", "_hs_s_a_es");
    }
}

輸出結(jié)果為

總結(jié)

到此這篇關(guān)于Java中Map和Set練習(xí)項(xiàng)目的文章就介紹到這了,更多相關(guān)Java Map和Set練習(xí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java將String字符串帶括號(hào)轉(zhuǎn)成List的簡(jiǎn)單方法

    Java將String字符串帶括號(hào)轉(zhuǎn)成List的簡(jiǎn)單方法

    Java中我們有時(shí)需要對(duì)現(xiàn)有的字符串進(jìn)行切割并轉(zhuǎn)化成一個(gè)List集合,這篇文章主要給大家介紹了關(guān)于Java將String字符串帶括號(hào)轉(zhuǎn)成List的簡(jiǎn)單方法,需要的朋友可以參考下
    2023-03-03
  • 非常全面的Java異常處理(全文干貨,值得收藏)

    非常全面的Java異常處理(全文干貨,值得收藏)

    這篇文章主要給大家介紹了非常全面的Java異常處理的相關(guān)資料,全文干貨,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Spring筆記-@Order注解和Ordered接口解析

    Spring筆記-@Order注解和Ordered接口解析

    這篇文章主要介紹了Spring筆記-@Order注解和Ordered接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 最新評(píng)論

    兴义市| 沂南县| 剑川县| 长顺县| 永城市| 陵川县| 营口市| 皋兰县| 霍林郭勒市| 荆州市| 贺州市| 桃园市| 浮梁县| 隆昌县| 蓬莱市| 汪清县| 乌鲁木齐市| 呼伦贝尔市| 东乡县| 安平县| 罗平县| 从化市| 鸡西市| 黄平县| 龙岩市| 兴义市| 乌拉特中旗| 乌鲁木齐县| 湟中县| 那曲县| 托克托县| 汾阳市| 日土县| 庆元县| 驻马店市| 金寨县| 大渡口区| 青铜峡市| 汤阴县| 武胜县| 峨眉山市|