集合
单列集合:
Collection接口:list接口可重复,Set接口不可重复
List集合:
实现类:ArrayList,LinkedList
Set集合:
实现类:HashSet,TreeSet
双列集合:
Map接口:
实现类:HashMap
ctrl+B打开源码,视图->工具窗口->structure打开方法列表
Collection集合的常用方法:
boolean add(E e) 添加元素,add方法的返回值为true
void clear() 清空集合
boolean remove(Object o) 删除指定元素
boolean contains(Object o) 判断是否包含指定元素
boolean isEmpty() 判断集合是否为空
int size() 集合长度
//遍历常用方法
Iterator<E>iterator();返回集合中元素的迭代器,通过集合的iterator()方法获得
iterator中常用方法:
E next();返回迭代去中的下一个元素
boolean hasNext():如果迭代器中有更多元素,则返回true
//举例
Collection<String> c=new ArrayList<String>();
c.add("zhangsna");
c.add("lisi");
Iterator<String> it=c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
List集合
1.有序,存储和取出的元素顺序一致
2.可重复,存储的元素可以重复
//特有方法
void add(E e) 添加元素到末尾
void add(int index, E element) 指定位置插入元素
void remove(int position) 删除指定位置的元素
void remove(String item) 删除第一次出现的item,传入的Item就是待删除项
E set(int index, E element) ,返回被修改的元素
int size()
E get(int index),注意索引是从0开始的,返回指定索引的元素
//ListIterator,列表迭代器,List集合特有的迭代器
void add(E e) 将指定的元素插入列表(可选操作)。
E next()
boolean hasNext()
E previous()
boolean hasPrevious()
void remove() 从列表中删除 next()或 previous() (可选操作)返回的最后一个元素。
void set(E e) 用指定的元素(可选操作)替换 next()或 previous()返回的最后一个元素。
增强for
格式:
for(元素数据类型 变量名:数组或者collection集合){
}
简化数组和Collection集合的遍历,内部是一个Iterator迭代器
//数组增强for
int []arr={1,2,4,5,6};
for(int i:arr){
System.out.println(i);
}
//集合增强for
List<String> c=new ArrayList<String>();
c.add("zhangsna");
c.add("lisi");
c.add("zaima");
for(String str:c){
System.out.println(str);
}
ArrayList底层是数组,查询快,增删慢
ListedList底层是链表,查询慢增删快
//LinkedList
void addFirst(E e) //在该列表开头插入指定的元素。
void addLast(E e) //将指定的元素追加到此列表的末尾。
E getFirst() //返回此列表中的第一个元素。
E getLast() //返回此列表中的最后一个元素。
E removeFirst() //从此列表中删除并返回第一个元素。
E removeLast() //从此列表中删除并返回最后一个元素。
Set集合
底层是哈希表,不包含重复元素,没有带索引的方法,所以不能使用普通的for循环遍历
HashSet:对集合的迭代顺序不作保证
int hashCode() 返回对象的哈希码值
同一个对象多次调用hashCode()方法返回的哈希值相同。
hashCode()方法可以被重写,实现不同对象相同的哈希值
HashSet集合,实现Set集合
底层是哈希表
存储和取出顺序不一致
不包含重复元素
HashSet<String>hs=new HashSet<String>();
hs.add("zhangsna");
hs.add("lisi");
for(String str:hs){
System.out.println(str);
}
LinkedHashSet集合实现了Set集合
哈希表和链表实现Set接口,具有可预测的迭代次序
链表保证元素有序,元素的存储和取出顺序一致
没有重复元素
TreeSet间接实现Set接口
元素有序,不是指存储和取出的顺序,而是指可以按照一定的规则排序,具体排序方式取决于构造方法
TreeSet()根据其元素的自然排序进行排序
TreeSet(Comparator comparator):根据指定的比较器进行排序
没有带索引的方法,不能使用普通for循环遍历
不包含重复元素
Map集合
Interface Map<k,v>,不能包含重复的键
V put(K key, V value)
V remove(Object key) ,返回的是待删除的键所对应的值
void clear()
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
int size()
//获取功能
V get(Object key)
Set<K> keySet() 返回键的集合
Collection<V> values() 返回值的集合
Set<Map.Entry<K,V>> entrySet() 获取键值对对象的集合
//举例
Map<String ,String>m=new HashMap<String,String>();
m.put("1","张三");
m.put("2","李四");
m.put("3","王五");
Set<String>ks=m.keySet();
Iterator<String>it=ks.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//值的集合
Collection<String>c=m.values();
Iterator<String>it=c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//map集合的遍历
Map<String ,String>m=new HashMap<String,String>();
m.put("1","张三");
m.put("2","李四");
m.put("3","王五");
Set<String>key=m.keySet();
for(String str:key){
System.out.println(str+"---"+m.get(str));
}
//迭代器遍历
Iterator<String>it=key.iterator();
while(it.hasNext()){
String str=it.next();
System.out.println(str+"---"+m.get(str));
}
//entrySet遍历
Set<Map.Entry<String, String>> entries = m.entrySet();
for(Map.Entry<String, String> me:entries){
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"------"+value);
}
Map.Entry<k,v>
K getKey()
V getValue()
文件流
FIle是文件和目录的抽象表示,其封装的并不是真正存在的文件,仅仅是一个路径名而已,可以是存在的也可以是不存在的。将来要通过具体的操作把这个路径的内容转换为具体存在的。
//File(File parent, String child)
File f=new File("F://java");
File fp=new File(f,"c.txt");
//File(String pathname)
File f=new File("F:\\java\\a.txt");
//File(String parent, String child)
File f=new File("F:\\java","b.txt");
/*boolean createNewFile() ,如果文件存在创建一个文件返回true,否则返回false,创建文件按的时候如果上级目录不存在,将会报错。*/
File f=new File("F:\\java\\a.txt");
System.out.println(f.createNewFile());
//boolean mkdir(),如果目录不存在创建一个目录,返回true,否则返回false
File f=new File("F:\\\\java\\java练习");
System.out.println(f.mkdir());
//boolean mkdirs(),创建多级目录
File f=new File("F:\\\\java\\java练习1\\我爱学习");
System.out.println(f.mkdirs());
//File类的判断和获取功能
boolean isDirectory() 测试此抽象路径名表示的文件是否为目录。
boolean isFile() 测试此抽象路径名表示的文件是否为普通文件。
boolean exists() 测试此抽象路径名表示的文件或目录是否存在
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
String getPath() 将此抽象路径名转换为路径名字符串。
String getName() 返回由此抽象路径名表示的文件或目录的名称。
String[] list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
File[] listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
//文件删除功能
File f=new File("day04_jdbc/a.txt");
System.out.println(f.delete());
//当要删除一个目录,但该目录下还有文件,则不能使用delete()直接删除