Java2EE练习及面试题_chapter11Java集合_上

简介: Java2EE练习及面试题_chapter11Java集合_上

题目01

list测试
package com.jerry.java;
import org.junit.Test;
import java.util.*;
/**
 * @author jerry_jy
 * @create 2022-10-05 16:50
 */
public class CollectionTest {
    @Test
    public void test1() {
        System.out.println("========ArrayList=======");
        Collection arrayList = new ArrayList();
        arrayList.add("AA");
        arrayList.add("BB");
        arrayList.add(123);
        arrayList.add(new Date());
        System.out.println(arrayList.size());//4
        System.out.println("========LinkedList=========");
        Collection linkedList = new LinkedList();
        linkedList.add("CC");
        linkedList.add(456);
        System.out.println(linkedList.size());//2
        linkedList.addAll(linkedList);
        System.out.println(linkedList.size());//6
        System.out.println(linkedList);//[AA, BB, 123, Wed Oct 05 16:58:36 CST 2022, CC, 456]
        linkedList.clear();
        System.out.println(linkedList.isEmpty());//true
        System.out.println("=======================");
        Collection vector = new Vector();
        vector.add("DD");
        vector.add(789);
        System.out.println(vector.size());//2
        System.out.println(vector);//[DD, 789]
        arrayList.addAll(vector);
        System.out.println(arrayList);//[AA, BB, 123, Wed Oct 05 17:18:36 CST 2022, DD, 789]
        System.out.println(arrayList.remove(789));//true
        System.out.println(arrayList);//[AA, BB, 123, Wed Oct 05 17:26:58 CST 2022, DD]
        Object[] objects = arrayList.toArray();
        for (int i = 0; i < objects.length; i++) {
            System.out.println(objects[i]);
        }
        System.out.println(vector.contains(789));//true
        System.out.println(vector.contains(678));//false
        for (Object o : vector) {
            System.out.println(o);
        }
        System.out.println("=========iterator==========");
        Iterator iterator = vector.iterator();
        while (iterator.hasNext()) {
            Object o = iterator.next();
            if (o.equals(789)) {
                iterator.remove();
            }
            System.out.println(iterator.next());//DD 789
        }
        vector.clear();
        System.out.println(vector.size());//0
        System.out.println(vector.isEmpty());//true
        for (Object o : arrayList) {
        }
    }
    @Test
    public void test2() {
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        updateList(list);
        System.out.println(list);//[1, 2]
    }
    private static void updateList(List list) {
        list.remove(2);
    }
    @Test
    public void test3() {
        LinkedList linkedList = new LinkedList();
        linkedList.add("AA");
        linkedList.add("BB");
        linkedList.add("CC");
        linkedList.addFirst("first");
        linkedList.addLast("last");
        System.out.println(linkedList);//[first, AA, BB, CC, last]
        System.out.println(linkedList.getFirst());//first
        System.out.println(linkedList.getLast());//last
        linkedList.removeFirst();
        linkedList.removeLast();
        System.out.println(linkedList);//[AA, BB, CC]
    }
}    

题目02

//在List内去除重复数字值,要求尽量简单
    @Test
    public void test4() {
        List list = new ArrayList();
        list.add(new Integer(1));
        list.add(new Integer(2));
        list.add(new Integer(2));
        list.add(new Integer(4));
        list.add(new Integer(4));
        List list2 = duplicateList(list);
        for (Object integer : list2) {
            System.out.println(integer);
        }
    }
    public static List duplicateList(List list) {
        //在List内去除重复数字值,要求尽量简单
        HashSet set = new HashSet();
        set.addAll(list);//把List内含有重复数字值的集合,添加到HashSet里,自动就去重了
        return new ArrayList(set);//把新的集合set传到ArrayList里面
    }

题目03

map集合测试
    @Test
    public void test5() {
        HashMap hashMap = new HashMap();
        hashMap.put(001, "AA");
        hashMap.put(002, "BB");
        hashMap.put(003, "CC");
        System.out.println(hashMap.size());//3
        System.out.println("map的所有的value:");
        Collection values = hashMap.values();
        Iterator iterator = values.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        System.out.println("map的所有key:");
        Set keys = hashMap.keySet();
        for (Object key : keys) {
            System.out.println(key + "->" + hashMap.get(key));
        }
        System.out.println("map所有的映射关系:");
        // 映射关系的类型是Map.Entry类型,它是Map接口的内部接口
        Set mappings = hashMap.entrySet();
        for (Object mapping : mappings) {
            Map.Entry entry = (Map.Entry) mapping;
            System.out.println("key是:" + entry.getKey() + ",value是:" + entry.getValue());
        }
    }

题目04

/*
请从键盘随机输入10个整数保存到List中,并按倒序、从大到小的顺序显示出来
 */
package com.jerry.exer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/**
 * @author jerry_jy
 * @create 2022-10-06 10:28
 */
public class Exer1 {
    /*
    请从键盘随机输入10个整数保存到List中,并按倒序、从大到小的顺序显示出来
     */
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        System.out.println("请从键盘随机输入10个整数:");
        for (int i = 0; i < 10; i++) {
            Scanner scanner = new Scanner(System.in);
            int num = scanner.nextInt();
            list.add(num);
        }
        System.out.println("原始的list:" + list);
        Collections.reverse(list);
        System.out.println("反转后的:" + list);
    }
}

题目05

/*
请把学生名与考试分数录入到集合中,并按分数显示前三名成绩学员的名字。
TreeSet(Student(name,score,id))
 */
package com.jerry.exer;
import java.util.TreeSet;
/**
 * @author jerry_jy
 * @create 2022-10-06 16:15
 */
public class Exer2 {
    public static void main(String[] args) {
        TreeSet<Student> set = new TreeSet<>();
        set.add(new Student("Jerry", 99, 1001));
        set.add(new Student("Tom", 76, 1002));
        set.add(new Student("Lily", 86, 1003));
        set.add(new Student("Luke", 59, 1004));
        set.add(new Student("Cherry", 100, 1005));
        set.add(new Student("Jim", 98, 1006));
//        System.out.println(set.toString());
        Object[] objects = set.toArray();
        for (int i = 0; i < 3; i++) {
            System.out.println(objects[i]);
        }
    }
}
class Student implements Comparable{
    private String name;
    private double score;
    private int id;
    public Student() {
    }
    public Student(String name, double score, int id) {
        this.name = name;
        this.score = score;
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score=" + score +
                ", id=" + id +
                '}';
    }
    @Override
    public int compareTo(Object o) {
        if (o != null){
            Student s = (Student) o;
            return -Double.compare(this.getScore(), s.getScore());
        }
        throw new RuntimeException("传入的数据类型不一致!");
    }
}

题目06

/*
定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作。
 */
package com.jerry.exer1;
import java.util.Collections;
import java.util.HashSet;
/**
 * @author jerry_jy
 * @create 2022-10-06 16:54
 */
public class Exer1 {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        System.out.println("======添加单个元素======");
        set.add("AA");
        set.add("BB");
        System.out.println(set);//[AA, BB]
        HashSet set1 = new HashSet();
        set1.add("CC");
        set1.add("DD");
        System.out.println("=======添加另一个集合========");
        set.addAll(set1);
        System.out.println(set);//[AA, BB, CC, DD]
        System.out.println("=======删除元素========");
        set.remove("DD");
        System.out.println(set);//[AA, BB, CC]
        System.out.println("=======判断集合中是否包含一个元素========");
        System.out.println(set.contains("CC"));//true
        System.out.println("=======判断是否为空========");
        System.out.println(set.isEmpty());//false
        System.out.println("=======返回集合里元素的个数========");
        System.out.println(set.size());//3
        System.out.println("=======清除集合========");
        set.clear();
        System.out.println(set.isEmpty());//true
    }
}

题目07

/*创建Set接口的实现类,添加10个以上的元素,通过Iterator遍历此集合元素。*/
package com.jerry.exer1;
import java.util.HashSet;
import java.util.Iterator;
/**
 * @author jerry_jy
 * @create 2022-10-06 17:21
 */
public class Exer2 {
    /*创建Set接口的实现类,添加10个以上的元素,通过Iterator遍历此集合元素。*/
    public static void main(String[] args) {
        HashSet set = new HashSet();
        //添加10个以上的元素
        for (int i = 0; i < 10; i++) {
            set.add(i);
        }
        //通过Iterator遍历此集合元素
        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

题目08

/*创建Set接口的实现类,添加10个以上的元素,通过foreach遍历此集合元素。*/
package com.jerry.exer1;
import java.util.HashSet;
/**
 * @author jerry_jy
 * @create 2022-10-06 17:25
 */
public class Exer3 {
    /*创建Set接口的实现类,添加10个以上的元素,通过foreach遍历此集合元素。*/
    public static void main(String[] args) {
        HashSet set = new HashSet();
        //添加10个以上的元素
        for (int i = 0; i < 10; i++) {
            set.add(i);
        }
        //通过foreach遍历此集合元素
        for (Object o : set) {
            System.out.println(o);
        }
    }
}

题目09

/*创建Set接口的实现类,添加10个以上的元素,要求能够排序。*/
package com.jerry.exer1;
import java.util.Collections;
import java.util.HashSet;
/**
 * @author jerry_jy
 * @create 2022-10-06 17:27
 */
public class Exer4 {
    /*创建Set接口的实现类,添加10个以上的元素,要求能够排序。*/
    public static void main(String[] args) {
        HashSet set = new HashSet();
        //添加10个以上的元素
        for (int i = 0; i < 10; i++) {
            set.add(i);
        }
    }
}

题目10

/*创建Car类,包含name,price属性,构造器等方法,创建测试类,在main方法中创建Set接口的实现类,添加5个以上的Car对象,遍历集合元素,验证重复元素是否过滤了;如果没有过滤,实现过滤功能;把每个小车的price降10000元,再遍历,查看price是否已改变*/
package com.jerry.exer1;
import java.util.HashSet;
/**
 * @author jerry_jy
 * @create 2022-10-06 17:34
 */
public class Exer5 {
   public static void main(String[] args) {
        HashSet set = new HashSet();
        Car byd = new Car("BYD", 139999);
        Car bmw = new Car("BMW", 339999);
        Car farrier = new Car("Farrier", 939999);
        Car audi = new Car("Audi", 239999);
        Car benz = new Car("Benz", 439999);
        set.add(byd);
        set.add(bmw);
        set.add(farrier);
        set.add(audi);
        set.add(benz);
        set.add(benz);//重复添加,会失败的
        System.out.println(set);
        System.out.println("=====把每个小车的price降10000元,再遍历========");
        byd.setPrice(byd.decreasePrice());
        bmw.setPrice(bmw.decreasePrice());
        farrier.setPrice(farrier.decreasePrice());
        audi.setPrice(audi.decreasePrice());
        benz.setPrice(benz.decreasePrice());
        System.out.println(set);
    }
}
class Car {
    private String name;
    private double price;
    public Car() {
    }
    public Car(String name, double price) {
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
    public double decreasePrice(){
        return price-10000;
    }
}

题目11

/*定义一个Collection接口类型的变量,引用一个List集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作。*/
package com.jerry.exer1;
import java.util.ArrayList;
import java.util.HashSet;
/**
 * @author jerry_jy
 * @create 2022-10-06 17:50
 */
public class Exer6 {
   public static void main(String[] args) {
        ArrayList list = new ArrayList();
        System.out.println("======添加单个元素======");
        list.add("aa");
        list.add("bb");
        list.add("cc");
        System.out.println(list);//[aa, bb, cc]
        System.out.println("=======添加另一个集合========");
        ArrayList list1 = new ArrayList();
        list1.add("dd");
        list1.add("ee");
        list.addAll(list1);
        System.out.println(list);//[aa, bb, cc, dd, ee]
        System.out.println("=======删除元素========");
        list.remove("ee");
        System.out.println(list);//[aa, bb, cc, dd]
        System.out.println("=======判断集合中是否包含一个元素========");
        System.out.println(list.contains("dd"));//true
        System.out.println("=======判断是否为空========");
        System.out.println(list.isEmpty());//false
        System.out.println("=======返回集合里元素的个数========");
        System.out.println(list.size());//4
        System.out.println("=======清除集合========");
        list.clear();
        System.out.println(list.isEmpty());//true
    }
}

题目12

/*创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;*/
package com.jerry.exer1;
import java.util.ArrayList;
/**
 * @author jerry_jy
 * @create 2022-10-06 17:56
 */
public class Exer7 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        for (int i = 0; i < 10; i++) {
            list.add(i);
        }
        System.out.println("=====原来的list=====");
        System.out.println(list);
        System.out.println("=====在2号位插入一个元素=====");
        list.add(1, "new");
        System.out.println(list);
        System.out.println("=====获得5号位元素=====");
        System.out.println(list.get(4));//3
        System.out.println("=====删除6号位元素=====");
        System.out.println(list.remove(6));//5
        System.out.println(list);
        System.out.println("=====修改7号位的元素=====");
        list.remove(6);
        list.add(6, "new_7");
        System.out.println(list);
    }
}

题目13

/*通过四种方法遍历集合*/
package com.jerry.exer1;
import java.util.ArrayList;
import java.util.Iterator;
/**
 * @author jerry_jy
 * @create 2022-10-06 18:04
 */
public class Exer8 {
    /*通过四种方法遍历集合*/
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        for (int i = 0; i < 10; i++) {
            list.add(i);
        }
        System.out.println("for 方式一");
        Object[] array = list.toArray();
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
        System.out.println("iterator 方式二");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        System.out.println("for each方式三");
        for (Object o : list) {
            System.out.println(o);
        }
        System.out.println("直接打印list 方式四");
        System.out.println(list);
    }
}

题目14

/*创建LinkedList实例化对象,练习具有队列特点的方法*/
package com.jerry.exer1;
import java.util.Collections;
import java.util.LinkedList;
/**
 * @author jerry_jy
 * @create 2022-10-06 18:08
 */
public class Exer9 {
    /*创建LinkedList实例化对象,练习具有队列特点的方法*/
    public static void main(String[] args) {
        LinkedList linkedList = new LinkedList();
        linkedList.add("AA");
        linkedList.add("BB");
        linkedList.add("CC");
        linkedList.addFirst("first");
        linkedList.addLast("last");
        System.out.println(linkedList);//[first, AA, BB, CC, last]
        System.out.println(linkedList.getFirst());//first
        System.out.println(linkedList.getLast());//last
        linkedList.removeFirst();
        linkedList.removeLast();
        System.out.println(linkedList);//[AA, BB, CC]
        Collections.reverse(linkedList);
        System.out.println(linkedList);//[CC, BB, AA]
    }
}

题目15

    /*按要求实现下列问题:
1)封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;(10分)
2)只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象:
新闻一:中国多地遭雾霾笼罩空气质量再成热议话题
新闻二:春节临近北京“卖房热”
3)将新闻对象添加到ArrayList集合中,并且使用ListIterator倒序遍历;
4)在遍历集合过程中,对新闻标题进行处理,超过15字的只保留前14个,然后在后边加“…”
5)在控制台打印遍历出经过处理的新闻标题;
*/
package com.jerry.exer1;
import java.util.ArrayList;
import java.util.Iterator;
/**
 * @author jerry_jy
 * @create 2022-10-06 18:11
 */
public class Exer10 {
    public static void main(String[] args) {
        News news1 = new News("新闻一:中国多地遭雾霾笼罩空气质量再成热议话题");
        News news2 = new News("新闻二:春节临近北京“卖房热”");
        ArrayList<News> list = new ArrayList<>();
        list.add(news1);
        list.add(news2);
        Iterator<News> iterator = list.iterator();
        while (iterator.hasNext()) {
            if (iterator.next().getTitle().length() > 15) {
                int len = iterator.next().getTitle().length() - 1;
                String substring = iterator.next().getTitle().substring(0, len - 1);
//                System.out.println(substring);
                iterator.next().setTitle(substring+ "...");
            } else {
                System.out.println(iterator.next());
            }
        }
    }
}
class News {
    private String title;
    private String content;
    public News() {
    }
    public News(String title) {
        this.title = title;
    }
    public News(String title, String content) {
        this.title = title;
        this.content = content;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    @Override
    public String toString() {
        return "News{" +
                "title='" + title + '\'' +
                '}';
    }
}

面试01

Collection 和 Collections的区别

答:Collection是集合类的上级接口,继承于他的接口主要有Set 和List.

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作


面试02

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别
答:Set里的元素是不能重复的,用equals()方法判读两个Set是否相等
    equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

面试03

List, Set, Map是否继承自Collection接口

答: List,Set是,Map不是


面试04

两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

答:不对,有相同的hash code

值相同,Hash Code一定相同

HashCode相同,那么值不一定同。


面试05

说出ArrayList,Vector, LinkedList的存储性能和特性

答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。


面试06

HashMap和Hashtable的区别

答:

1.HashMap与Hashtable都实现了Map接口。由于HashMap的非线程安全性,效率上可能高于Hashtable。Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

2. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

3.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

4.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

5.Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。


面试07

ArrayList和Vector的区别

答:就ArrayList与Vector主要从二方面来说.

一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半


面试08

你所知道的集合类都有哪些?主要方法?

答:最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。


面试09

以下代码的运行结果?
  public static void main(String[] args) {
    Integer[] datas = {1,2,3,4,5};
    List<Integer> list = Arrays.asList(datas);
    list.add(5);
    System.out.println(list.size());
  }
运行异常,不允许添加元素
Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合

–end–


相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
14天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
36 5
|
27天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
66 14
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
27天前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
38 4
|
1月前
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
36 6
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
63 4