欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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è)解決壞鍵盤打字問(wèn)題的思路,需要的朋友可以參考下

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

這道題的思路在后面的題目過(guò)程中能用到,所以先把這題給寫出來(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é)果如下

壞鍵盤打字

題目鏈接:

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

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

按照發(fā)現(xiàn)順序,在一行中輸出壞掉的鍵。其中英語(yǔ)字母只輸出大寫,每個(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){
        //將字符串大寫
        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 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如何實(shí)現(xiàn)構(gòu)造器注入

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

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

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

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

    SpringBoot ThreadLocal 簡(jiǎn)單介紹及使用詳解

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

    java中如何判斷對(duì)象是否是垃圾

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

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

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

    一文掌握Springboot集成RabbitMQ的方法

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

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

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

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

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

    淺談Apache Maven ToolChains的使用

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

最新評(píng)論