最新国产好看的视频,伊人天堂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來統(tǒng)計(jì)字符串?dāng)?shù)組中每個(gè)字符串的出現(xiàn)次數(shù),然后討論了如何使用set來找出只出現(xiàn)一次的數(shù)字,最后提出了一個(gè)解決壞鍵盤打字問題的思路,需要的朋友可以參考下

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

這道題的思路在后面的題目過程中能用到,所以先把這題給寫出來

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

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

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

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

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

這個(gè)操作看起來可能是把第二個(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中沒有該元素,就把該元素放進(jìn)去,如果有,就把這個(gè)元素從set中刪去。最后輸出set中的元素

以 {1,2,3,4,1,2,3} 為例,當(dāng)?shù)谝淮瓮锓?,沒有遇到重復(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é)果如下

壞鍵盤打字

題目鏈接:

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

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

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

示例

輸入

7_This_is_a_test

_hs_s_a_es

輸出

7TI

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

public static void func(String str1, String str2){
        //將字符串大寫
        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");
    }

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

現(xiàn)在問題變成了如何去重,這部分不難能想到,我們可以創(chuàng)建一個(gè)setBroken來存放已經(jīng)查找到的壞鍵,如果set和setBroken中都沒有這個(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ù)給挑出來,然后對(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

    北流市| 建阳市| 新疆| 嘉义市| 武穴市| 梨树县| 赣榆县| 梨树县| 琼海市| 乌兰县| 白城市| 三河市| 邵东县| 咸阳市| 明水县| 南川市| 芷江| 凌源市| 名山县| 元江| 自贡市| 盈江县| 金昌市| 珲春市| 磐石市| 普洱| 锦州市| 长沙市| 永嘉县| 中牟县| 天柱县| 云阳县| 绥芬河市| 霍山县| 丰台区| 临漳县| 花垣县| 白城市| 仁寿县| 冀州市| 广丰县|