集合之Map
1. HashMap
Map的主要实现类,基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。HashSet的底层是HashMap,TreeSet的底层是TreeMap。
HashMap中key的特点:
1、无序(添加顺序和取出顺序不一致)
2、不能重复(会覆盖)HashMap和Hashtable的区别?
1、参考ArrayList/Vector StringBuilder/StringBuffer
2、HashMap支持key和value的值是null值,而Hashtable会报NullPointerExceptionHashMap的增删改查
Map<String,String> map = new HashMap<String,String>();
// 元素都是成对存放的(键值对) 增加元素
map.put("zhagnsan", "123456");
map.put("lisi", "6543121");
map.put("wangwu", "456789");
map.put("zhaoliu", "987654");
// 取出元素,根据key取value
String value = map.get("zhangsan");
System.out.println(value);
// 修改元素,元素的替换是通过key来替换value
map.put("lisi","21");
System.out.println(map);
// 删除元素,通过key删除键值对
map.remove("zhangsan");
System.out.println(map);
- 取得HashMap中所有的键或值
// 取得所有的key
Set<String> set1 = map.keySet();
System.out.println(set1);
// 取得所有的value
// 1、使用迭代器
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
String value = it.next();
System.out.println(value);
}
// 2、foreach
for (String value : set) {
System.out.println(value);
}
// 3、转为数组再输出
String[] strArr = set.toArray(new String[]{});
for (String string : strArr) {
System.out.println(string);
}
// 直接获取所有的键值对
Set<Entry<String,String>> set2 = map.entrySet();
System.out.println(set2);
文件——File类
文件和目录路径名的抽象表示形式。
// file对象只是本地硬盘文件的抽象表示,跟具体有没有该文件无关。
File file = new File("F:/abc/a.txt");
try {
file.createNewFile();// 创建文件,若文件存在则不创建
} catch (IOException e) {
e.printStackTrace();
}
//File也可以表示为一个文件夹
String path = "F:/abc/";
String fileName = "a.txt";
File fileDir = new File(path);// 文件夹
// 通过目录加文件名的形式创建文件
File file = new File(fileDir,fileName);// 与上面一样效果
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// 判断一个file对象是文件还是文件夹
System.out.println(fileDir.isDirectory());// true
System.out.println(fileDir.isFile());// false
System.out.println(file.isFile());// true
System.out.println(file.isDirectory());// false
// 获得File的文件名和路径
System.out.println(file);// F:\abc\a.txt
System.out.println(file.getName());// 文件名:a.txt
// 路径:F:\abc,返回值为File
System.out.println(file.getParentFile());
// 路径:F:\abc,返回值为String
System.out.println(file.getParent());
// 文件重命名
File fileOld = new File("F:/abc/a.txt");
File fileNew = new File("F:/abc/b.txt");
fileOld.renameTo(fileNew);// 重命名为b.txt
// 显示一个文件夹下所有的文件
File file = new File("F:/abc/");
File[] f = file.listFiles();// 返回一个File数组
String[] strArr = file.list();// 返回一个String数组
// 删除一个文件&文件夹
file.delete();// 删除文件
fileDir.delete();// 只能删除空的文件夹,非空则不能删除
给一个文件夹下的所有文件重命名为1,2,3…,保留文件的后缀名
File file = new File("F:/abc/");
File[] f = file.listFiles();
int i = 1;
for(File fi : f){
fi.renameTo(new File("F:/abc/" + i + fi.getName().substring(fi.getName().lastIndexOf("."))));
i++;
}
文件名过滤器—FilenameFilter
将一个文件夹里的所有.java文件取出
File file = new File("F:/abc/");
String[] fileArr = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".java")){
return true;// true则放入返回的数组中
}
return false;
}
});
for(String str : fileArr){
System.out.println(str);
}
3655

被折叠的 条评论
为什么被折叠?



