javaAPI(续)

Set集合:无序,不可重复

-HashSet:底层哈希表。

jdk1.7之前:哈希表(数组+单链表)。

jdk1.8:哈希表(数组+单链表+红黑二叉树)。

-LinkedHashSet:底层哈希表+链表

增删效率优化

方法同HashSet。

-TreeSet:底层红黑二叉树

特点:实现自然排序,查询某个元素效率较高。

添加元素效率较低。(节点翻转)

    • Efirst()

      返回此集合中当前的第一个(最低)元素。

      Efloor(E e)

      返回此集合中最大的元素小于或等于给定元素,如果没有这样的元素,则返回 null

      Elast()

      返回此集合中当前的最后(最高)元素。

      Elower(E e)

      返回这个集合中最大的元素严格小于给定的元素,如果没有这样的元素,则返回 null

      Ehigher(E e)

      返回严格大于给定元素的该集合中的最小元素,如果没有此元素则返回 null

Collection和Collections的区别

Interface Collection<E>

  • Collections
    extends Object
  • 此类仅由静态方法组合或返回集合。 它包含对集合进行操作的多态算法,“包装器”,返回由指定集合支持的新集合,以及其他一些可能的和最终的。

  • Collection集合的包装类。

    • static <T> booleanaddAll(Collection<? super T> c, T... elements)

      将所有指定的元素添加到指定的集合。

      static <T> intbinarySearch(List<? extends Comparable<? super T>> list, T key)

      使用二叉搜索算法搜索指定对象的指定列表。

      (从集合数据中利用二分查询的方式,查询指定的key,只能查询有序的)

      static <T extends Comparable<? super T>>
      void
      sort(List<T> list)

      根据其元素的natural ordering对指定的列表进行排序。

      static <T> voidsort(List<T> list, Comparator<? super T> c)

      根据指定的比较器引起的顺序对指定的列表进行排序。

      static <T> voidcopy(List<? super T> dest, List<? extends T> src)

      将所有元素从一个列表复制到另一个列表中。

      (目标长度大于等于)

      static <T> List<T>emptyList()

      返回空列表(immutable)。

      static <T> voidfill(List<? super T> list, T obj)

      用指定的元素代替指定列表的所有元素。

      static intindexOfSubList(List<?> source, List<?> target)

      返回指定源列表中指定目标列表的第一次出现的起始位置,如果没有此类事件,则返回-1。

      static intlastIndexOfSubList(List<?> source, List<?> target)

      返回指定源列表中指定目标列表的最后一次出现的起始位置,如果没有此类事件则返回-1。

      static <T extends Object & Comparable<? super T>>
      T
      max(Collection<? extends T> coll)

      根据其元素的 自然顺序返回给定集合的最大元素。

      static <T> Tmax(Collection<? extends T> coll, Comparator<? super T> comp)

      根据指定的比较器引发的顺序返回给定集合的最大元素。

      static <T extends Object & Comparable<? super T>>
      T
      min(Collection<? extends T> coll)

      根据其元素的 自然顺序返回给定集合的最小元素。

      static <T> Tmin(Collection<? extends T> coll, Comparator<? super T> comp)

      根据指定的比较器引发的顺序返回给定集合的最小元素。

      static voidreverse(List<?> list)

      反转指定列表中元素的顺序。

      static <T> booleanreplaceAll(List<T> list, T oldVal, T newVal)

      将列表中一个指定值的所有出现替换为另一个。

      static voidswap(List<?> list, int i, int j)

      交换指定列表中指定位置的元素。

      static voidshuffle(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表达式

    • voidforEach(Consumer<? super T> action)

      对此流的每个元素执行操作。

      Stream<T>filter(Predicate<? super T> predicate)

      返回由与此给定谓词匹配的此流的元素组成的流。

      <R,A> Rcollect(Collector<? super T,A,R> collector)

      使用 Collector对此流的元素执行 mutable reduction Collector

      <R> Rcollect(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) )组成的流。

      (去重)

      booleananyMatch(Predicate<? super T> predicate)

      返回此流的任何元素是否与提供的谓词匹配。

      booleanallMatch(Predicate<? super T> predicate)

      返回此流的所有元素是否与提供的谓词匹配。

      booleannoneMatch(Predicate<? super T> predicate)

      返回此流的元素是否与提供的谓词匹配。

Map集合

映射关系: key-value(键-值对象)

CN-中国

HashMap:哈希表 Hashtable

  • HashMap类大致相当于Hashtable ,除了它是不同步(线程不安全 无sy...修饰)的,并允许null(键和值都允许为空)

HashTable:哈希表

    • Set<K>keySet()

      返回此地图中包含的键的Set视图。

      VputIfAbsent(K key, V value)

      如果指定的键尚未与某个值相关联(或映射到 null ),则将其与给定值相关联并返回 null ,否则返回当前值。

      Collection<V>values()

      返回此地图中包含的值的Collection视图。

      booleancontainsKey(Object key)

      如果此映射包含指定键的映射,则返回 true 。

      booleancontainsValue(Object value)

      如果此地图将一个或多个键映射到指定值,则返回 true 。

      voidforEach(BiConsumer<? super K,? super V> action)

      对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。

      Vget(Object key)

      返回到指定键所映射的值,或 null如果此映射包含该键的映射。

      booleanisEmpty()

      如果此地图不包含键值映射,则返回 true 。

      voidputAll(Map<? extends K,? extends V> m)

      将指定地图的所有映射复制到此地图。

      booleanremove(Object key, Object value)

      仅当指定的密钥当前映射到指定的值时删除该条目。

      Vreplace(K key, V value)

      只有当目标映射到某个值时,才能替换指定键的条目。

      booleanreplace(K key, V oldValue, V newValue)

      仅当当前映射到指定的值时,才能替换指定键的条目。

Class LinkedHashMap<K,V>:上的子类

添加效率优于hashmap

Hashtable

  • 该类实现了一个哈希表,它将键映射到值。(线程安全) 任何非null对象都可以用作键值或值。

  • 为了从散列表成功存储和检索对象,用作键的对象必须实现hashCode方法和equals方法。

  • public class ConcurrentHashMap<K,V>:哈希表。
    extends AbstractMap<K,V>
    implements ConcurrentMap<K,V>, Serializable

    支持检索的完全并发性和更新的高预期并发性的哈希表。

  • TreeMap<K,V>:数据查询效率较高,实现自然排序,添加数据性能差。

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实例。

    • 方法摘要

      • booleancanRead()

        测试应用程序是否可以读取由此抽象路径名表示的文件。

        booleancanWrite()

        测试应用程序是否可以修改由此抽象路径名表示的文件。

        booleancreateNewFile()

        当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。

        static FilecreateTempFile(String prefix, String suffix)

        在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。

        booleandelete()

        删除由此抽象路径名表示的文件或目录。

        booleanexists()

        测试此抽象路径名表示的文件或目录是否存在。

        FilegetAbsoluteFile()

        返回此抽象路径名的绝对形式。

        StringgetAbsolutePath()

        返回此抽象路径名的绝对路径名字符串。

        longgetFreeSpace()

        返回分区未分配的字节数 named此抽象路径名。

        StringgetName()

        返回由此抽象路径名表示的文件或目录的名称。

        StringgetParent()

        返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。

        FilegetParentFile()

        返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。

        StringgetPath()

        将此抽象路径名转换为路径名字符串。

        longgetTotalSpace()

        通过此抽象路径名返回分区 named的大小。

        booleanisAbsolute()

        测试这个抽象路径名是否是绝对的。

        booleanisDirectory()

        测试此抽象路径名表示的文件是否为目录。

        booleanisFile()

        测试此抽象路径名表示的文件是否为普通文件。

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)

关流将文件缓冲区的数据刷新到磁盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值