Set集合:无序,不可重复
-HashSet:底层哈希表。
jdk1.7之前:哈希表(数组+单链表)。
jdk1.8:哈希表(数组+单链表+红黑二叉树)。
-LinkedHashSet:底层哈希表+链表
增删效率优化
方法同HashSet。
-TreeSet:底层红黑二叉树
特点:实现自然排序,查询某个元素效率较高。
添加元素效率较低。(节点翻转)
Collection和Collections的区别
Interface Collection<E>
-
Collections extends Object
-
此类仅由静态方法组合或返回集合。 它包含对集合进行操作的多态算法,“包装器”,返回由指定集合支持的新集合,以及其他一些可能的和最终的。
-
Collection集合的包装类。
-
-
static <T> boolean
addAll(Collection<? super T> c, T... elements)
将所有指定的元素添加到指定的集合。
static <T> int
binarySearch(List<? extends Comparable<? super T>> list, T key)
使用二叉搜索算法搜索指定对象的指定列表。
(从集合数据中利用二分查询的方式,查询指定的key,只能查询有序的)
static <T extends Comparable<? super T>>
voidsort(List<T> list)
根据其元素的natural ordering对指定的列表进行排序。
static <T> void
sort(List<T> list, Comparator<? super T> c)
根据指定的比较器引起的顺序对指定的列表进行排序。
static <T> void
copy(List<? super T> dest, List<? extends T> src)
将所有元素从一个列表复制到另一个列表中。
(目标长度大于等于)
static <T> List<T>
emptyList()
返回空列表(immutable)。
static <T> void
fill(List<? super T> list, T obj)
用指定的元素代替指定列表的所有元素。
static int
indexOfSubList(List<?> source, List<?> target)
返回指定源列表中指定目标列表的第一次出现的起始位置,如果没有此类事件,则返回-1。
static int
lastIndexOfSubList(List<?> source, List<?> target)
返回指定源列表中指定目标列表的最后一次出现的起始位置,如果没有此类事件则返回-1。
static <T extends Object & Comparable<? super T>>
Tmax(Collection<? extends T> coll)
根据其元素的 自然顺序返回给定集合的最大元素。
static <T> T
max(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定的比较器引发的顺序返回给定集合的最大元素。
static <T extends Object & Comparable<? super T>>
Tmin(Collection<? extends T> coll)
根据其元素的 自然顺序返回给定集合的最小元素。
static <T> T
min(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定的比较器引发的顺序返回给定集合的最小元素。
static void
reverse(List<?> list)
反转指定列表中元素的顺序。
static <T> boolean
replaceAll(List<T> list, T oldVal, T newVal)
将列表中一个指定值的所有出现替换为另一个。
static void
swap(List<?> list, int i, int j)
交换指定列表中指定位置的元素。
static void
shuffle(List<?> list)
使用默认的随机源随机排列指定的列表。
-
java8新特性
面向对象:接口式编程
面向函数编程
lamada
1.参数部分()参数的类型可以省略,当且仅当参数部分只有一个参数,参数的括号可以省略。
2.箭头部分(函数) ->
3.函数体部分{ }
只有一个表达式或一条语句,大括号可以省略。
4.方法引用
-类名::方法名
-对象名::方法名
-类名::new
Supplier <Student> s=Student::new;
List list=new ArrayList();
list.forEach(System.out::println);
Stream流
接受声明于 **java.util.function** 包内的接口,例如 **Predicate、Function、Consumer 或 Supplier**,
那么可以向其传lambda表达式
-
-
void
forEach(Consumer<? super T> action)
对此流的每个元素执行操作。
Stream<T>
filter(Predicate<? super T> predicate)
返回由与此给定谓词匹配的此流的元素组成的流。
<R,A> R
collect(Collector<? super T,A,R> collector)
使用 Collector对此流的元素执行 mutable reduction
Collector
。<R> R
collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
对此流的元素执行 mutable reduction操作。
Stream<T>
limit(long maxSize)
返回由此流的元素组成的流,截短长度不能超过
maxSize
。static <T> Stream<T>
of(T... values)
返回其元素是指定值的顺序排序流。
static <T> Stream<T>
of(T t)
返回包含单个元素的顺序
Stream
。<R> Stream<R>
map(Function<? super T,? extends R> mapper)
返回由给定函数应用于此流的元素的结果组成的流。
<R> Stream<R>
flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
返回由通过将提供的映射函数应用于每个元素而产生的映射流的内容来替换该流的每个元素的结果的流。
Stream<T>
sorted()
返回由此流的元素组成的流,根据自然顺序排序。
Stream<T>
distinct()
返回由该流的不同元素(根据
Object.equals(Object)
)组成的流。(去重)
boolean
anyMatch(Predicate<? super T> predicate)
返回此流的任何元素是否与提供的谓词匹配。
boolean
allMatch(Predicate<? super T> predicate)
返回此流的所有元素是否与提供的谓词匹配。
boolean
noneMatch(Predicate<? super T> predicate)
返回此流的元素是否与提供的谓词匹配。
-
Map集合
映射关系: key-value(键-值对象)
CN-中国
HashMap:哈希表 Hashtable
-
HashMap类大致相当于Hashtable ,除了它是不同步(线程不安全 无sy...修饰)的,并允许null(键和值都允许为空)
HashTable:哈希表
-
-
Set<K>
keySet()
返回此地图中包含的键的
Set
视图。V
putIfAbsent(K key, V value)
如果指定的键尚未与某个值相关联(或映射到
null
),则将其与给定值相关联并返回null
,否则返回当前值。Collection<V>
values()
返回此地图中包含的值的
Collection
视图。boolean
containsKey(Object key)
如果此映射包含指定键的映射,则返回 true 。
boolean
containsValue(Object value)
如果此地图将一个或多个键映射到指定值,则返回 true 。
void
forEach(BiConsumer<? super K,? super V> action)
对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。
V
get(Object key)
返回到指定键所映射的值,或
null
如果此映射包含该键的映射。boolean
isEmpty()
如果此地图不包含键值映射,则返回 true 。
void
putAll(Map<? extends K,? extends V> m)
将指定地图的所有映射复制到此地图。
boolean
remove(Object key, Object value)
仅当指定的密钥当前映射到指定的值时删除该条目。
V
replace(K key, V value)
只有当目标映射到某个值时,才能替换指定键的条目。
boolean
replace(K key, V oldValue, V newValue)
仅当当前映射到指定的值时,才能替换指定键的条目。
-
Class LinkedHashMap<K,V>:上的子类
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- java.util.HashMap<K,V>
-
- java.util.LinkedHashMap<K,V
添加效率优于hashmap
Hashtable
-
该类实现了一个哈希表,它将键映射到值。(线程安全) 任何非
null
对象都可以用作键值或值。 -
为了从散列表成功存储和检索对象,用作键的对象必须实现
hashCode
方法和equals
方法。
-
-
Enumeration<K>
keys()
返回此散列表中键的枚举。
-
-
public class ConcurrentHashMap<K,V>:哈希表。 extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable
支持检索的完全并发性和更新的高预期并发性的哈希表。
-
TreeMap<K,V>:数据查询效率较高,实现自然排序,添加数据性能差。
-
一个红黑树基于
NavigableMap
实现。
List<Map.Entry<Character,Integer>> list=new ArrayList<>(strvls.entrySet());
集合泛型:泛型通常用大写字母指定类型,
泛型可以有多个(map)<E,T>
泛型默认Object
泛型方法的定义:
public <T> T look(T v) { return v; }
Java.IO.*
作用:读写文件数据和文件属性。
File:表示文件或者目录。对文件和目录的创建删除。
-
文件和目录路径名的抽象表示。
-
绝对路径
-
相对路劲
-
-
构造方法 Constructor and Description File(File parent, String child)
从父抽象路径名和子路径名字符串创建新的
File
实例。File(String pathname)
通过将给定的路径名字符串转换为抽象路径名来创建新的
File
实例。File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的
File
实例。File(URI uri)
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
-
方法摘要
-
-
boolean
canRead()
测试应用程序是否可以读取由此抽象路径名表示的文件。
boolean
canWrite()
测试应用程序是否可以修改由此抽象路径名表示的文件。
boolean
createNewFile()
当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
static File
createTempFile(String prefix, String suffix)
在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。
boolean
delete()
删除由此抽象路径名表示的文件或目录。
boolean
exists()
测试此抽象路径名表示的文件或目录是否存在。
File
getAbsoluteFile()
返回此抽象路径名的绝对形式。
String
getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
long
getFreeSpace()
返回分区未分配的字节数 named此抽象路径名。
String
getName()
返回由此抽象路径名表示的文件或目录的名称。
String
getParent()
返回此抽象路径名的父
null
的路径名字符串,如果此路径名未命名为父目录,则返回null。File
getParentFile()
返回此抽象路径名的父,或抽象路径名
null
如果此路径名没有指定父目录。String
getPath()
将此抽象路径名转换为路径名字符串。
long
getTotalSpace()
通过此抽象路径名返回分区 named的大小。
boolean
isAbsolute()
测试这个抽象路径名是否是绝对的。
boolean
isDirectory()
测试此抽象路径名表示的文件是否为目录。
boolean
isFile()
测试此抽象路径名表示的文件是否为普通文件。
-
-
IO流:输入输出流。 统称为数据流
IO流的分类
按流向分:
◦ 输入流:程序可以从中读取数据的流
◦ 输出流:程序能向其中写入数据的流
按读写方式划分:
◦ 字节流:以字节为单位传输数据的流(inputstream,output stream)
◦ 字符流:以字符为单位传输数据的流(reader,writer)
按功能分:
◦ 节点流:用于直接操作目标设备的流
◦ 处理流:是对一个已存在的流的连接和封装,通过对数据的处理为程序提供更强大、灵活的读写功能。
1.字节流(图片,视频,音频等原始细节文件)
IO流对象不会被垃圾回收器回收,需手动。
-InputStream
文件不存在抛出FileNotfound异常
FileInputStream
-
用于读取诸如图像数据的原始字节流。
-OutputStream
文件不存在会自动创建并写入
2.字符流
FileReader
FileReader类创建了一个可以读取文件内容的Reader类。它最常用的构造方法显示如下:
FileReader(StringfilePath)
FileReader(FilefileObj)
每一个都能引发一个FileNotFoundException异常。
FileWriter
FileWriter 创建一个可以写文件的Writer类。它最常用的构造方法如下:
FileWriter(StringfilePath)
FileWriter(StringfilePath, boolean append)
FileWriter(FilefileObj)
关流将文件缓冲区的数据刷新到磁盘。