亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

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

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

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

這個操作看起來可能是把第二個cat放進去了,但是實際上是把cat重新輸入了,然后把Key值輸入為2了。因為map其中節(jié)點的樣子如上圖所示。

代碼部分如下

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)

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

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

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

按照數(shù)組的順序,接著向下放,就會遇到重復(fù)的元素,這時候就要把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));
    }

運行結(jié)果如下

壞鍵盤打字

題目鏈接:

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

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

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

示例

輸入

7_This_is_a_test

_hs_s_a_es

輸出

7TI

題目思路:該題的思路在于如何找出壞鍵,這里提供一種思路,先把實際輸入的數(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)建一個setBroken來存放已經(jīng)查找到的壞鍵,如果set和setBroken中都沒有這個元素才打印.

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ù)給挑出來,然后對于重復(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í)項目的文章就介紹到這了,更多相關(guān)Java Map和Set練習(xí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Web學(xué)習(xí)之Cookie和Session的深入理解

    Java Web學(xué)習(xí)之Cookie和Session的深入理解

    這篇文章主要給大家介紹了關(guān)于Java Web學(xué)習(xí)之Cookie和Session的相關(guān)資料,需要的朋友可以參考下
    2018-04-04
  • @RequiredArgsConstructor如何實現(xiàn)構(gòu)造器注入

    @RequiredArgsConstructor如何實現(xiàn)構(gòu)造器注入

    這篇文章主要介紹了@RequiredArgsConstructor如何實現(xiàn)構(gòu)造器注入問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Java求1+2!+3!+...+20!的和的代碼

    Java求1+2!+3!+...+20!的和的代碼

    這篇文章主要介紹了Java求1+2!+3!+...+20!的和的代碼,需要的朋友可以參考下
    2017-02-02
  • SpringBoot ThreadLocal 簡單介紹及使用詳解

    SpringBoot ThreadLocal 簡單介紹及使用詳解

    ThreadLocal 叫做線程變量,意思是 ThreadLocal 中填充的變量屬于當(dāng)前線程,該變量對其他線程而言是隔離的,也就是說該變量是當(dāng)前線程獨有的變量,這篇文章主要介紹了SpringBoot ThreadLocal 的詳解,需要的朋友可以參考下
    2024-01-01
  • java中如何判斷對象是否是垃圾

    java中如何判斷對象是否是垃圾

    這篇文章主要介紹了java中如何判斷對象是否是垃圾,Java有兩種算法判斷對象是否是垃圾:引用計數(shù)算法和可達性分析算法,需要的朋友可以參考下
    2023-04-04
  • Java 深入淺出掌握Collection單列集合Set

    Java 深入淺出掌握Collection單列集合Set

    Collection集合類是單列集合類的根接口,用來存儲一系列符合某種規(guī)則的元素。List接口和Set接口是Collection集合類的子接口,其中List接口的常用實現(xiàn)類有ArrayList類、Vector類和LinkedList類;Set接口的常用實現(xiàn)類有HashSet類和TreeSet類
    2021-11-11
  • 一文掌握Springboot集成RabbitMQ的方法

    一文掌握Springboot集成RabbitMQ的方法

    RabbitMQ是開源的消息隊列服務(wù)器,實現(xiàn)了AMQP高級消息隊列協(xié)議標(biāo)準(zhǔn),AMQP?是一種應(yīng)用層協(xié)議,為面向消息的中間件設(shè)計,基于此協(xié)議的客戶端與消息中間件可傳遞消息,并不受產(chǎn)品、開發(fā)語言等條件的限制,這篇文章主要介紹了Springboot集成RabbitMQ的過程,需要的朋友可以參考下
    2024-04-04
  • java配置文件取值的多種方式總結(jié)

    java配置文件取值的多種方式總結(jié)

    這篇文章主要為大家詳細介紹了java配置文件取值的多種方式,包括一般項目,國際化項目,springboot項目,文中的示例代碼講解詳細,需要的可以參考下
    2023-11-11
  • 解決springboot環(huán)境切換失效的問題

    解決springboot環(huán)境切換失效的問題

    這篇文章主要介紹了解決springboot環(huán)境切換失效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 淺談Apache Maven ToolChains的使用

    淺談Apache Maven ToolChains的使用

    Maven是java中非常有用和常用的構(gòu)建工具,基本上現(xiàn)在大型的java項目都是Maven和gradle的天下了。本文將介紹Apache Maven ToolChains的使用。
    2021-06-06

最新評論