2023最新中級(jí)java面試題,包含答案遵馆。刷題必備!記錄一下丰榴。

好記性不如爛筆頭

內(nèi)容來(lái)自 面試寶典-中級(jí)java面試題合集

問(wèn): 請(qǐng)解釋什么是Java虛擬機(jī)(JVM)货邓,以及它的主要功能是什么?

Java虛擬機(jī)(JVM)是一個(gè)虛擬的計(jì)算機(jī)四濒,它在實(shí)際的硬件和操作系統(tǒng)上運(yùn)行换况,并且能夠執(zhí)行Java字節(jié)碼。Java字節(jié)碼是由Java編譯器從Java源代碼編譯而來(lái)的盗蟆。JVM是Java平臺(tái)的核心組件戈二,它為Java應(yīng)用提供了一個(gè)運(yùn)行時(shí)環(huán)境。

JVM的主要功能包括:

  1. 加載代碼:JVM通過(guò)類加載器(ClassLoader)加載Java類字節(jié)碼喳资,并把它轉(zhuǎn)換為類或接口觉吭。
  2. 管理內(nèi)存:JVM管理Java應(yīng)用程序的內(nèi)存,確保每個(gè)對(duì)象存儲(chǔ)在正確的內(nèi)存位置仆邓,同時(shí)也負(fù)責(zé)在不需要對(duì)象時(shí)垃圾回收鲜滩。
  3. 執(zhí)行代碼:JVM是Java字節(jié)碼的執(zhí)行引擎伴鳖,它解釋字節(jié)碼指令,執(zhí)行操作徙硅,并管理程序計(jì)數(shù)器榜聂,棧,和對(duì)本地方法棧的執(zhí)行嗓蘑。
  4. 性能優(yōu)化:JVM使用即時(shí)編譯器(JIT)將字節(jié)碼轉(zhuǎn)換為本地機(jī)器代碼峻汉,以提高執(zhí)行效率。
  5. 提供運(yùn)行時(shí)環(huán)境:JVM提供了Java應(yīng)用運(yùn)行時(shí)所需的各種環(huán)境脐往,如線程管理休吠,安全管理,和異常管理等业簿。

總的來(lái)說(shuō)瘤礁,JVM是Java能夠?qū)崿F(xiàn)“一次編寫(xiě),處處運(yùn)行”這一特性的關(guān)鍵梅尤,因?yàn)樗軌蛟诟鞣N不同的硬件和操作系統(tǒng)上提供一致的運(yùn)行環(huán)境柜思。

問(wèn): 請(qǐng)簡(jiǎn)述一下Java的垃圾回收機(jī)制,并說(shuō)明如何判斷一個(gè)對(duì)象是否應(yīng)該被垃圾收集巷燥。

Java的垃圾回收(Garbage Collection赡盘,GC)機(jī)制是Java運(yùn)行時(shí)環(huán)境的一部分,主要負(fù)責(zé)自動(dòng)管理應(yīng)用程序的內(nèi)存缰揪。具體來(lái)說(shuō)陨享,垃圾回收器會(huì)自動(dòng)回收程序中不再使用的對(duì)象,釋放其占用的內(nèi)存钝腺。這樣可以防止內(nèi)存泄漏抛姑,并幫助開(kāi)發(fā)者更有效地管理內(nèi)存。

Java的垃圾回收基于“分代收集”策略艳狐。內(nèi)存區(qū)域主要被分為新生代和老年代定硝。新創(chuàng)建的對(duì)象首先會(huì)被放在新生代(Eden區(qū))。一旦Eden區(qū)滿了毫目,就會(huì)觸發(fā)一次Minor GC蔬啡,清理掉不再使用的對(duì)象,并將還在使用的對(duì)象移動(dòng)到Survivor區(qū)镀虐。Survivor區(qū)滿后箱蟆,仍在使用的對(duì)象會(huì)被移動(dòng)到老年代。當(dāng)老年代也滿了粉私,會(huì)觸發(fā)一次Full GC顽腾,清理老年代中不再使用的對(duì)象。

判斷一個(gè)對(duì)象是否應(yīng)該被垃圾收集诺核,主要依賴于兩個(gè)條件:

  1. 對(duì)象是否可達(dá):垃圾回收器會(huì)從一系列的“根”對(duì)象開(kāi)始抄肖,遍歷對(duì)象圖。任何從根對(duì)象開(kāi)始可達(dá)的對(duì)象都被認(rèn)為是正在使用的對(duì)象窖杀,不會(huì)被回收漓摩。反之,如果對(duì)象不可達(dá)入客,那么它就被認(rèn)為是可回收的管毙。
  2. 對(duì)象是否無(wú)用:除了考慮對(duì)象是否可達(dá),垃圾回收器還會(huì)考慮對(duì)象是否有用桌硫。例如夭咬,如果一個(gè)對(duì)象實(shí)現(xiàn)了finalize()方法,那么在垃圾回收器回收該對(duì)象前铆隘,會(huì)先調(diào)用這個(gè)方法卓舵。如果finalize()方法使該對(duì)象重新變得可達(dá),那么這個(gè)對(duì)象就不會(huì)被回收膀钠。然而掏湾,需要注意的是,finalize()方法在Java 9之后被標(biāo)記為廢棄肿嘲,因?yàn)樗黾恿死厥盏牟淮_定性融击。

總的來(lái)說(shuō),Java的垃圾回收機(jī)制幫助開(kāi)發(fā)者減輕了內(nèi)存管理的負(fù)擔(dān)雳窟。而判斷一個(gè)對(duì)象是否應(yīng)該被垃圾收集尊浪,主要是看該對(duì)象是否可達(dá)以及是否有用。

問(wèn): 在Java中封救,如何實(shí)現(xiàn)多態(tài)际长?請(qǐng)舉例說(shuō)明。

多態(tài)是面向?qū)ο缶幊讨械囊粋€(gè)重要概念兴泥,它允許你使用一個(gè)接口來(lái)代表不同類型的對(duì)象工育。在Java中,多態(tài)主要是通過(guò)繼承和接口實(shí)現(xiàn)的搓彻。

以下是一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明多態(tài)在Java中的實(shí)現(xiàn):

// 基類 Animal
public class Animal {
    void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

// 派生類 Dog
public class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("The dog barks");
    }
}

// 派生類 Cat
public class Cat extends Animal {
    @Override
    void makeSound() {
        System.out.println("The cat meows");
    }
}

在上述代碼中如绸,Animal 是一個(gè)基類,Dog 和 Cat 是其派生類旭贬。每個(gè)類都有一個(gè)名為 makeSound 的方法怔接,但每個(gè)方法的實(shí)現(xiàn)都不同。這就是多態(tài)性的體現(xiàn)稀轨,不同的對(duì)象(Dog 或 Cat)可以根據(jù)其自己的特性來(lái)實(shí)現(xiàn)相同的方法扼脐。

在主函數(shù)中,我們可以使用 Animal 類型的引用來(lái)引用 Dog 或 Cat 對(duì)象,并調(diào)用 makeSound 方法瓦侮。Java 虛擬機(jī)會(huì)在運(yùn)行時(shí)確定應(yīng)該調(diào)用哪個(gè)實(shí)現(xiàn)(Dog 的還是 Cat 的)艰赞,這就是運(yùn)行時(shí)多態(tài)性。

public static void main(String[] args) {
    Animal myDog = new Dog();
    Animal myCat = new Cat();

    myDog.makeSound();  // 輸出 "The dog barks"
    myCat.makeSound();  // 輸出 "The cat meows"
}

在這個(gè)例子中肚吏,雖然 myDog 和 myCat 都是 Animal 類型方妖,但調(diào)用 makeSound 方法時(shí),會(huì)按照實(shí)際的對(duì)象類型(Dog 或 Cat)來(lái)調(diào)用相應(yīng)的方法罚攀。這就是Java中的多態(tài)党觅。

問(wèn): 解釋一下Java中的接口和抽象類的區(qū)別和聯(lián)系。

在Java編程語(yǔ)言中斋泄,接口(Interface)和抽象類(Abstract Class)是兩種用于實(shí)現(xiàn)抽象化和模塊化的重要工具杯瞻。它們都是用來(lái)定義抽象方法的,但在使用和功能上存在一些顯著的區(qū)別炫掐。

區(qū)別:

  1. 定義:接口是一個(gè)完全抽象的類魁莉,只包含抽象方法和常量。而抽象類是一個(gè)包含抽象方法和具體方法的類卒废,它可以同時(shí)包含字段和常量沛厨。
  2. 實(shí)現(xiàn)方式:在Java中,一個(gè)類只能繼承自一個(gè)抽象類摔认,但可以實(shí)現(xiàn)多個(gè)接口逆皮。這使得接口在實(shí)現(xiàn)多重繼承方面具有一定的優(yōu)勢(shì)。
  3. 方法實(shí)現(xiàn):接口中的所有方法都是抽象的参袱,沒(méi)有方法體的电谣。而抽象類中既可以包含抽象方法(沒(méi)有方法體),也可以包含具體的方法(有方法體)抹蚀。
  4. 字段:接口中只能包含靜態(tài)的剿牺、最終的字段(默認(rèn)即是,不必顯式聲明)环壤,而在抽象類中晒来,字段可以是任何的。
  5. 訪問(wèn)修飾符:接口中的方法默認(rèn)都是public的郑现,而抽象類中的方法可以是任何訪問(wèn)修飾符湃崩。

聯(lián)系:

接口和抽象類都是Java語(yǔ)言中的抽象類型,它們都不能被實(shí)例化接箫。它們都是用來(lái)定義和實(shí)現(xiàn)抽象概念的攒读,通過(guò)它們,我們可以建立復(fù)雜的系統(tǒng)框架和設(shè)計(jì)模式辛友。在實(shí)際使用中薄扁,它們經(jīng)常是相互配合使用的。比如,一個(gè)抽象類可以實(shí)現(xiàn)多個(gè)接口邓梅,這樣既能實(shí)現(xiàn)類的多重繼承脱盲,又能實(shí)現(xiàn)方法和字段的共享。

以上就是Java中接口和抽象類的區(qū)別和聯(lián)系震放。在設(shè)計(jì)和實(shí)現(xiàn)一個(gè)系統(tǒng)時(shí)宾毒,如何合理使用接口和抽象類驼修,是每一個(gè)Java程序員都需要仔細(xì)思考的問(wèn)題殿遂。

問(wèn): 請(qǐng)簡(jiǎn)述Java的異常處理機(jī)制,并舉一個(gè)例子說(shuō)明如何使用乙各。

Java的異常處理機(jī)制是Java語(yǔ)言提供的一種用于處理運(yùn)行時(shí)錯(cuò)誤的方法墨礁。異常是程序在執(zhí)行過(guò)程中出現(xiàn)的問(wèn)題,例如試圖訪問(wèn)不存在的文件耳峦,網(wǎng)絡(luò)中斷恩静,或者嘗試執(zhí)行非法操作等。Java的異常處理機(jī)制允許我們?cè)诔绦蛑刑幚磉@些問(wèn)題蹲坷,避免程序因?yàn)橐恍╁e(cuò)誤而完全崩潰驶乾。

Java的異常處理機(jī)制基于"try-catch-finally"模型。程序流程首先執(zhí)行try塊中的代碼循签,如果try塊中的代碼拋出異常级乐,程序立即跳轉(zhuǎn)到相應(yīng)的catch塊進(jìn)行處理。如果try和catch塊中都有代碼需要無(wú)論是否發(fā)生異常都要執(zhí)行县匠,那么可以放在finally塊中风科。

下面是一個(gè)具體的例子,這個(gè)例子試圖打開(kāi)一個(gè)文件乞旦,并打印其內(nèi)容贼穆。如果文件不存在,Java會(huì)拋出一個(gè)FileNotFoundException兰粉。

import java.io.*;

public class Main {
    public static void main(String[] args) {
        File file = new File("non_existent_file.txt");

        try (FileReader fr = new FileReader(file)) {
            BufferedReader br = new BufferedReader(fr);
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            System.out.println("無(wú)法打開(kāi)文件: " + e.getMessage());
        } catch (IOException e) {
            System.out.println("讀取文件出錯(cuò): " + e.getMessage());
        }
    }
}

在這個(gè)例子中故痊,如果文件不存在,Java會(huì)拋出FileNotFoundException玖姑,這個(gè)異常會(huì)被catch塊捕獲愕秫,然后打印出一個(gè)錯(cuò)誤信息。同樣客峭,如果讀取文件時(shí)發(fā)生其他I/O錯(cuò)誤豫领,這些錯(cuò)誤也會(huì)被捕獲并處理。這就是Java異常處理機(jī)制的基本用法舔琅。

問(wèn): 解釋一下Java中的靜態(tài)方法和靜態(tài)變量等恐,以及它們的作用和特點(diǎn)。

在Java中,靜態(tài)方法和靜態(tài)變量是使用static關(guān)鍵字進(jìn)行聲明的课蔬。它們被稱為靜態(tài)成員囱稽,因?yàn)樗鼈兪穷惣?jí)別的,而不是實(shí)例級(jí)別的二跋。換句話說(shuō)战惊,這些成員是類本身的一部分,而不是類的實(shí)例的一部分扎即。

靜態(tài)變量(Static Variables)

  • 靜態(tài)變量也被稱為類變量吞获。
  • 無(wú)論創(chuàng)建多少個(gè)類的實(shí)例,都只有一個(gè)靜態(tài)變量的副本谚鄙。
  • 靜態(tài)變量在類的所有實(shí)例之間是共享的各拷。
  • 如果沒(méi)有創(chuàng)建類的實(shí)例,也可以訪問(wèn)靜態(tài)變量闷营。
  • 靜態(tài)變量在程序開(kāi)始時(shí)創(chuàng)建烤黍,在程序結(jié)束時(shí)銷毀。

例如:

class MyClass {
    static int classVar;
    int instanceVar;
}

在這個(gè)例子中傻盟,classVar是一個(gè)靜態(tài)變量(類變量)速蕊,而instanceVar是一個(gè)實(shí)例變量。如果你創(chuàng)建一個(gè)MyClass的實(shí)例并修改classVar娘赴,那么所有其他MyClass的實(shí)例都會(huì)看到這個(gè)修改规哲。

靜態(tài)方法(Static Methods)

  • 靜態(tài)方法也被稱為類方法。
  • 類似于靜態(tài)變量筝闹,靜態(tài)方法也是類級(jí)別的媳叨,而不是實(shí)例級(jí)別的。
  • 如果沒(méi)有創(chuàng)建類的實(shí)例关顷,也可以訪問(wèn)靜態(tài)方法糊秆。
  • 靜態(tài)方法只能直接訪問(wèn)靜態(tài)數(shù)據(jù)成員,不能直接訪問(wèn)實(shí)例數(shù)據(jù)成員(需要借助對(duì)象來(lái)訪問(wèn))议双。
  • 靜態(tài)方法不能使用this和super關(guān)鍵字痘番。

例如:

class MyClass {
    static void staticMethod() {
        // do something
    }

    void instanceMethod() {
        // do something else
    }
}

在這個(gè)例子中,staticMethod是一個(gè)靜態(tài)方法平痰,而instanceMethod是一個(gè)實(shí)例方法汞舱。你可以在沒(méi)有創(chuàng)建MyClass的實(shí)例的情況下調(diào)用staticMethod

要注意的是宗雇,雖然靜態(tài)方法和靜態(tài)變量在某些情況下非常有用昂芜,但是過(guò)度使用它們可以導(dǎo)致代碼難以理解和維護(hù)。因此赔蒲,通常建議只在確實(shí)需要的情況下使用靜態(tài)方法和靜態(tài)變量泌神。

問(wèn): 如何在Java中實(shí)現(xiàn)線程同步良漱?請(qǐng)列舉幾種常見(jiàn)的同步方式并進(jìn)行簡(jiǎn)單介紹。

線程同步在Java中是一個(gè)重要的概念欢际,主要用于確保多個(gè)線程能夠正確地共享資源母市,以防止數(shù)據(jù)的不一致性。以下是在Java中實(shí)現(xiàn)線程同步的幾種常見(jiàn)方式:

  1. synchronized關(guān)鍵字:這是Java中最基本的線程同步方式损趋。synchronized可以修飾方法或者以塊的形式出現(xiàn)患久,被synchronized修飾的方法或者代碼塊被稱為同步方法或同步塊。當(dāng)一個(gè)線程進(jìn)入同步方法或同步塊時(shí)浑槽,它會(huì)獲取一個(gè)鎖蒋失,其他線程則需要等待該線程釋放鎖才能進(jìn)入。
  2. ReentrantLock:ReentrantLock是Java SE5.0中引入的一個(gè)更靈活的線程同步工具括荡,它提供了與synchronized關(guān)鍵字類似的同步功能高镐,但是比synchronized更為強(qiáng)大和靈活溉旋。ReentrantLock允許線程嘗試獲取鎖畸冲,而不是永久等待,還提供了中斷等待鎖的線程的功能观腊。
  3. volatile關(guān)鍵字:volatile是Java提供的一種輕量級(jí)的同步機(jī)制邑闲,用于確保多線程能正確的共享變量。當(dāng)一個(gè)變量被volatile修飾時(shí)梧油,JVM會(huì)盡量保證所有線程看到這個(gè)變量的值是一致的苫耸。
  4. Atomic類:Java.util.concurrent.atomic包下提供了一些原子類,如AtomicInteger儡陨、AtomicLong等褪子。這些類提供了一些線程安全的操作方法,確保在并發(fā)環(huán)境下能正確地更新數(shù)據(jù)骗村。
  5. 使用ThreadLocal:ThreadLocal為每一個(gè)使用該變量的線程提供一個(gè)獨(dú)立的變量副本嫌褪,所以每一個(gè)線程都可以獨(dú)立地改變自己的副本,而不會(huì)影響其他線程所對(duì)應(yīng)的副本胚股。

以上就是在Java中實(shí)現(xiàn)線程同步的幾種常見(jiàn)方式笼痛。請(qǐng)注意,適當(dāng)?shù)剡x擇和使用這些同步機(jī)制對(duì)于保證多線程程序的正確性和性能至關(guān)重要琅拌。

問(wèn): 在Java中缨伊,如何實(shí)現(xiàn)字符串的反轉(zhuǎn)?請(qǐng)編寫(xiě)代碼示例进宝。

在Java中刻坊,字符串的反轉(zhuǎn)可以通過(guò)多種方法實(shí)現(xiàn),這里我將提供兩個(gè)示例代碼党晋,一個(gè)是使用StringBuilder谭胚,另一個(gè)是通過(guò)遞歸活尊。

使用StringBuilder實(shí)現(xiàn)字符串反轉(zhuǎn)

public class Main {
    public static void main(String[] args) {
        String str = "Hello World!";
        String reversed = reverseString(str);
        System.out.println("Original String: " + str);
        System.out.println("Reversed String: " + reversed);
    }

    public static String reverseString(String str) {
        return new StringBuilder(str).reverse().toString();
    }
}

通過(guò)遞歸實(shí)現(xiàn)字符串反轉(zhuǎn)

public class Main {
    public static void main(String[] args) {
        String str = "Hello World!";
        String reversed = reverseString(str);
        System.out.println("Original String: " + str);
        System.out.println("Reversed String: " + reversed);
    }

    public static String reverseString(String str) {
        if (str.isEmpty()) {
            return str;
        } else {
            return reverseString(str.substring(1)) + str.charAt(0);
        }
    }
}

這兩種方法都可以實(shí)現(xiàn)字符串的反轉(zhuǎn)。第一個(gè)方法使用StringBuilder的reverse()函數(shù)漏益,這是一個(gè)比較直觀且簡(jiǎn)單的方法蛹锰。第二個(gè)方法是遞歸方法,它通過(guò)遞歸調(diào)用將字符串的每一個(gè)字符逆序添加來(lái)實(shí)現(xiàn)反轉(zhuǎn)绰疤,這種方法對(duì)于理解遞歸的工作原理很有幫助铜犬。但是,如果字符串非常長(zhǎng)轻庆,遞歸可能會(huì)導(dǎo)致堆棧溢出癣猾,因此在實(shí)際使用中,建議使用StringBuilder的方法余爆。

問(wèn): 解釋一下Java中的泛型和類型擦除的概念纷宇。

泛型 (Generics) 是 Java 5 引入的一個(gè)新特性,允許在定義類蛾方、接口和方法時(shí)使用類型參數(shù)像捶,以支持泛型多態(tài)性。泛型的本質(zhì)是參數(shù)化類型桩砰,即給類拓春、接口、方法定義一個(gè)或多個(gè)類型參數(shù)亚隅,然后在使用時(shí)再為其指定具體的類型參數(shù)硼莽。

例如,我們可以定義一個(gè)泛型類 Box<T>煮纵,其中的 T 是一個(gè)類型參數(shù):

public class Box<T> {
    private T t;

    public void set(T t) { this.t = t; }
    public T get() { return t; }
}

在這個(gè)例子中懂鸵,T 是一個(gè)占位符,當(dāng)創(chuàng)建 Box 的實(shí)例時(shí)行疏,我們可以用具體的類型(如 Integer匆光,String 等)替換 T。

然而隘擎,在 Java 中殴穴,泛型的實(shí)現(xiàn)采用了類型擦除(Type Erasure)的方式。類型擦除是 Java 編譯器在編譯時(shí)執(zhí)行的過(guò)程货葬,將泛型信息擦除采幌,只保留原始類型信息。這意味著震桶,運(yùn)行時(shí)的 Java 代碼并不保留泛型參數(shù)的具體類型信息休傍。例如,對(duì)于泛型列表 List<String>List<Integer>蹲姐,在運(yùn)行時(shí)磨取,它們都只是 List人柿,具體的類型信息(String 和 Integer)已被擦除。

類型擦除的主要原因是為了保持與舊版 Java 代碼的兼容性忙厌。在 Java 5 之前凫岖,Java 并沒(méi)有泛型,而是通過(guò) Object 類和強(qiáng)制類型轉(zhuǎn)換來(lái)實(shí)現(xiàn)類似的功能逢净。為了保持與這些舊代碼的兼容性哥放,Java 泛型設(shè)計(jì)者選擇了類型擦除這種方式。

雖然類型擦除會(huì)導(dǎo)致一些泛型信息的丟失爹土,但在大多數(shù)情況下甥雕,它并不會(huì)影響泛型的正常使用。然而胀茵,也正因?yàn)轭愋筒脸缏叮琂ava 的泛型并不能像 C++ 的模板那樣進(jìn)行完全的靜態(tài)類型檢查,這在一定程度上限制了 Java 泛型的表達(dá)能力琼娘。

問(wèn): 在Java中峭弟,如何實(shí)現(xiàn)集合數(shù)據(jù)結(jié)構(gòu)的操作?請(qǐng)列舉幾個(gè)常用的集合類轨奄,并進(jìn)行簡(jiǎn)單介紹孟害。

在Java中,集合數(shù)據(jù)結(jié)構(gòu)的操作主要通過(guò)Java集合框架來(lái)實(shí)現(xiàn)挪拟。Java集合框架主要包括兩種類型的集合,一種是Collection击你,另一種是Map玉组。Collection存儲(chǔ)一個(gè)元素集合,而Map存儲(chǔ)鍵/值對(duì)丁侄。

Java中的一些常用集合類包括:

  1. ArrayList:這是一個(gè)可以動(dòng)態(tài)改變大小的數(shù)組惯雳。它允許我們添加和刪除元素。ArrayList是非同步的鸿摇。
  2. LinkedList:LinkedList是一個(gè)雙向鏈表石景。它也可以進(jìn)行動(dòng)態(tài)的添加和刪除元素。由于它實(shí)現(xiàn)了Queue接口拙吉,因此也可以用作隊(duì)列潮孽。LinkedList也是非同步的。
  3. HashSet:HashSet是一個(gè)不允許存儲(chǔ)重復(fù)元素的集合筷黔。它只實(shí)現(xiàn)了Collection接口往史,所以它的所有元素都是唯一的。HashSet是非同步的佛舱。
  4. HashMap:HashMap是一個(gè)基于哈希表的Map接口的實(shí)現(xiàn)椎例。它允許我們使用鍵/值對(duì)的形式存儲(chǔ)元素挨决。HashMap也是非同步的。
  5. TreeMap:TreeMap是一個(gè)基于紅黑樹(shù)的NavigableMap實(shí)現(xiàn)订歪。它的元素會(huì)按照鍵的自然順序(或者根據(jù)提供的Comparator)進(jìn)行排序脖祈。

以上提到的這些集合類都位于java.util包中,它們提供了各種方法來(lái)操作集合數(shù)據(jù)刷晋,包括添加元素(add)撒犀、刪除元素(remove)、查找元素(contains)等掏秩。同時(shí)或舞,Java 8引入的Stream API也可以極大地方便我們處理集合數(shù)據(jù)。

需要注意的是蒙幻,上述的非同步集合類在多線程環(huán)境下可能會(huì)導(dǎo)致數(shù)據(jù)不一致的問(wèn)題映凳,如果需要在多線程環(huán)境下使用,可以考慮使用它們對(duì)應(yīng)的同步版本邮破,比如Vector诈豌、Hashtable,或者使用Collections.synchronizedList抒和、Collections.synchronizedMap等方法來(lái)獲取同步版本的集合矫渔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市摧莽,隨后出現(xiàn)的幾起案子庙洼,更是在濱河造成了極大的恐慌,老刑警劉巖镊辕,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件油够,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡征懈,警方通過(guò)查閱死者的電腦和手機(jī)石咬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卖哎,“玉大人鬼悠,你說(shuō)我怎么就攤上這事】髂龋” “怎么了焕窝?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)照藻。 經(jīng)常有香客問(wèn)我袜啃,道長(zhǎng),這世上最難降的妖魔是什么幸缕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任群发,我火速辦了婚禮晰韵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘熟妓。我一直安慰自己雪猪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布起愈。 她就那樣靜靜地躺著只恨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抬虽。 梳的紋絲不亂的頭發(fā)上官觅,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音阐污,去河邊找鬼休涤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笛辟,可吹牛的內(nèi)容都是我干的功氨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼手幢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捷凄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起围来,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤无拗,失蹤者是張志新(化名)和其女友劉穎玛荞,沒(méi)想到半個(gè)月后榔组,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體甫男,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挂疆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年锰茉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乾胶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捌年。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佛点,死狀恐怖醇滥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情超营,我是刑警寧澤鸳玩,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站演闭,受9級(jí)特大地震影響不跟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜米碰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一窝革、第九天 我趴在偏房一處隱蔽的房頂上張望购城。 院中可真熱鬧,春花似錦虐译、人聲如沸瘪板。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侮攀。三九已至,卻和暖如春厢拭,著一層夾襖步出監(jiān)牢的瞬間兰英,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工供鸠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畦贸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓回季,卻偏偏與公主長(zhǎng)得像家制,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泡一,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容