Java学习day17


复习一下,发现一些遗漏知识点,补上

一、 序列化和反序列化

序列化与反序列化

写完代码后,发现没有ID也可以进行序列化和反序列化,所以进行搜索

IDEA自动生成序列化ID

Serializable.java中也有描述:

经搜索得知,IDEA中对序列化ID的警告默认是关闭的,可以通过"Setting->Editor->Inspections->搜索UID->勾选选项"打开警告,然后可以通过警告自动生成serialVersionUID

二、 Java集合框架

Runoob教程

LinkedList(链表)

LinkedList:该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:

List list=Collections.synchronizedList(newLinkedList(...));

LinkedList 查找效率低。

ArrayList(数组)

该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。

HashSet(不可重复无顺序)

该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

TreeSet

该类实现了Set接口,可以实现排序等功能。

迭代器(Iterator)

例:遍历ArrayList

import java.util.*;
 
public class Test{
 public static void main(String[] args) {
     List<String> list=new ArrayList<String>();
     list.add("Hello");
     list.add("World");
     list.add("HAHAHAHA");
     //第一种遍历方法使用 For-Each 遍历 List
     for (String str : list) {            //也可以改写 for(int i=0;i<list.size();i++) 这种形式
        System.out.println(str);
     }
 
     //第二种遍历,把链表变为数组相关的内容进行遍历
     String[] strArray=new String[list.size()];
     list.toArray(strArray);
     for(int i=0;i<strArray.length;i++) //这里也可以改写为  for(String str:strArray) 这种形式
     {
        System.out.println(strArray[i]);
     }
     
    //第三种遍历 使用迭代器进行相关遍历
     
     Iterator<String> ite=list.iterator();
     while(ite.hasNext())//判断下一个元素之后有值
     {
         System.out.println(ite.next());
     }
 }
}

三种方法都是用来遍历ArrayList集合,第三种方法是采用迭代器的方法,该方法可以不用担心在遍历的过程中会超出集合的长度。

foreach和迭代器的区别

posted @ 2022-04-16 10:42  计算机181胡佛  阅读(19)  评论(0编辑  收藏  举报