班级网站设计与制作,影视小程序源码,做淘客的网站名称,淘宝优惠券网站怎么做1. Map集合概述
Map是一种键值对#xff08;key-value#xff09;的集合#xff0c;常用于存储具有映射关系的数据。与List和Set不同#xff0c;Map的键#xff08;key#xff09;是唯一的#xff0c;而值#xff08;value#xff09;可以重复。Map集合的主要实现类有…1. Map集合概述
Map是一种键值对key-value的集合常用于存储具有映射关系的数据。与List和Set不同Map的键key是唯一的而值value可以重复。Map集合的主要实现类有HashMap、TreeMap、Hashtable和LinkedHashMap。
1.1 Map的特点 无序性Map的键是无序的值的顺序与键无关。 键唯一性Map中的键是唯一的不允许重复。如果插入重复的键新值会覆盖旧值。 值可重复Map中的值可以重复且可以有多个null值。 键允许一个nullMap的键允许有一个null但值可以有多个null。
1.2 Map的常用实现类 HashMap基于哈希表实现键无序允许一个null键和多个null值线程不安全。 TreeMap基于红黑树实现键有序不允许null键但允许null值线程不安全。 Hashtable线程安全的Map实现不允许null键和null值。 LinkedHashMap基于链表实现保持插入顺序允许一个null键和多个null值线程不安全。
2. HashMap详解
2.1 HashMap的特点 键唯一值可重复HashMap的键具有Set集合的特点元素唯一且无序。 底层数据结构JDK1.7及之前是数组链表JDK1.8引入了红黑树优化了性能。 线程不安全HashMap是非线程安全的适合单线程环境。
2.2 HashMap的使用示例
public static void main(String[] args) {// 创建一个HashMap集合MapString, String map new HashMap();// 向集合中添加元素map.put(白日鼠, 白胜);map.put(豹子头, 林冲);map.put(小诸葛, 富安);// 允许一个null键和多个null值map.put(null, null);map.put(aaaa, null);// 值可以重复map.put(大诸葛, 富安);// 如果存在重复的key新值会覆盖旧值map.put(小诸葛, 高衙内);System.out.println(map);
}
3. TreeMap详解
3.1 TreeMap的特点 键有序TreeMap的键可以根据自然顺序或自定义比较器进行排序。 不允许null键TreeMap的键不能为null但值可以为null。 底层数据结构基于红黑树实现是一种平衡二叉树。
3.2 TreeMap的使用示例
public static void main(String[] args) {// 创建一个TreeMap集合MapString, String map new TreeMap();// 向集合中添加元素map.put(b, 白胜);map.put(a, 林冲);map.put(e, 富安);map.put(c, 富安);System.out.println(map);
}
4. Hashtable详解
4.1 Hashtable的特点 线程安全Hashtable是线程安全的适合多线程环境。 不允许null键和null值Hashtable不允许插入null键或null值。 无序性Hashtable中的元素是无序的。
4.2 Hashtable的使用示例
public static void main(String[] args) {// 创建一个Hashtable集合MapString, String map new Hashtable();// 向集合中添加元素map.put(b, 白胜);map.put(a, 林冲);map.put(e, 富安);// 不允许插入null值// map.put(c, null); // 会抛出NullPointerExceptionSystem.out.println(map);
}
5. LinkedHashMap详解
5.1 LinkedHashMap的特点 保持插入顺序LinkedHashMap保持元素的插入顺序。 允许null键和null值LinkedHashMap允许一个null键和多个null值。 线程不安全LinkedHashMap是非线程安全的。
5.2 LinkedHashMap的使用示例
public static void main(String[] args) {// 创建一个LinkedHashMap集合MapString, String map new LinkedHashMap();// 向集合中添加元素map.put(b, 白胜);map.put(a, 林冲);map.put(e, 富安);map.put(c, null);System.out.println(map);
}
6. 文件操作
6.1 文件的创建与删除
public class FileDemo {public static void main(String[] args) throws IOException {// 创建文件File file new File(D:\\aaa\\hello.txt);boolean newFile file.createNewFile();System.out.println(newFile);// 删除文件boolean delete file.delete();System.out.println(delete);}
}
6.2 目录的创建与删除
public class FileDemo2 {public static void main(String[] args) throws IOException {// 创建单级目录File file new File(D:\\aaa\\bbb);boolean mkdir file.mkdir();System.out.println(mkdir);// 创建多级目录File file2 new File(D:\\aaa\\ccc\\hhh\\ggg);boolean mkdirs file2.mkdirs();System.out.println(mkdirs);// 删除目录boolean delete file.delete();System.out.println(delete);}
}
6.3 文件的判断与获取功能
public class FileDemo5 {public static void main(String[] args) throws IOException {File file new File(D:\\aaa);// 判断文件是否存在boolean exists file.exists();System.out.println(exists);// 判断是否是文件boolean isFile file.isFile();System.out.println(是否是文件 isFile);// 判断是否是目录boolean isDir file.isDirectory();System.out.println(是否是目录 isDir);// 获取文件的绝对路径String absolutePath file.getAbsolutePath();System.out.println(绝对路径 absolutePath);}
}
7. 递归操作
public class FileDemo9 {static int level;public static void main(String[] args) throws IOException {File file new File(D:\\Program Files\\eclipse);parseFile(file);}public static void parseFile(File file) {if (file null || !file.exists()) {return;}level;File[] files file.listFiles();for (File f : files) {for (int i 0; i level; i) {System.out.print(\t);}System.out.println(f.getName());if (f.isDirectory()) {parseFile(f);}}level--;}
} 递归删除文件夹
public class FileDemo11 {public static void main(String[] args) throws IOException {File file new File(D:\\aaa);parseFile(file);}public static void parseFile(File file) {if (file null || !file.exists()) {return;}File[] files file.listFiles();for (File f : files) {if (f.isDirectory()) {parseFile(f);} else {f.delete();}}file.delete();}
}