即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

java集合、IO流

编程语言 qq_36083245 18℃ 0评论

一、集合:


1、特点:存储对象;长度可变;存储对象的类型可不同;


2、集合框架:


2)Collection


(1)List:有序的;元素可重复,有索引


(add(index, element)、add(index, Collection)、remove(index)、set(index,element)、get(index)、subList(from, to)、listIterator())


①ArrayList:底层是数组结构,查询快,增删慢,不同步。


②LinkedList:底层是链表结构,增删快,查询慢,不同步


addFist();addLast() getFirst();getLast()


removeFirst();removeLast() 获取并删除元素,无元素将抛异常:NoSuchElementException


替代的方法(JDK1.6):


offerFirst();offerLast();


peekFirst();peekLast();无元素返回null


pollFirst();pollLast();删除并返回此元素,无元素返回null


③Vector:底层是数组结构,线程同步,被ArrayList取代了


注:了对于判断是否存在,以及删除等操作,以依赖的方法是元素的hashCode和equals方法


ArrayList判断是否存在和删除操作依赖的是equals方法

(2)Set:无序的,无索引,元素不可重复


①HashSet:底层是哈希表,线程不同步,无序、高效


保证元素唯一性:通过元素的hashCode和equals方法。若hashCode值相同,则会判断equals的结果是否为true;hashCode不同,不会调用equals方法


LinkedHashSet:有序,是HashSet的子类


②TreeSet:底层是二叉树,可对元素进行排序,默认是自然顺序


保证唯一性:Comparable接口的compareTo方法的返回值


===》TreeSet两种排序方式:两种方式都存在时,以比较器为主


第一种:自然排序(默认排序):


添加的对象需要实现Comparable接口,覆盖compareTo方法


第二种:比较器


添加的元素自身不具备比较性或不是想要的比较方式。将比较器作为参数传递进去。


定义一个类,实现Comparator接口,覆盖compare方法。当主要条件相同时,比较次要条件。

3)Map集合:


(1)HashTable:底层数据结构是哈希表,不可存入null键和null值。同步的


Properties继承自HashTable,可保存在流中或从流中加载,是集合和IO流的结合产物


(2)HashMap:底层数据结构是哈希表;允许使用null键和null值,不同步,效率高


TreeMap:


底层数据结构时二叉树,不同步,可排序


与Set很像,Set底层就是使用了Map集合


方法:

    V put(K key, V value) ;  void putAll(Map m)
    void clear();  V remove(Object key)
    boolean containsKey(Object key);  containsValue(Object key);  isEmpty()
    V get(Object key); int size(); Collection values()
    Set keySet();  Set> entrySet()

2.3、Map集合两种取出方式:


第一种:Set keySet()


取出Map集合中的所有键放于Set集合中,然后再通过键取出对应的值


Set keySet = map.keySet();


Iterator it = keySet.iterator();


while(it.hasNext()){


String key = it.next();


String value = map.get(key);


//…..


}


第二种:Set

> Set<Map.Entry<String,String>> entrySet = map.entrySet();
> Iterator<Map.Entry<String,String>> it = entrySet.iterator();
> While(it.hasNext()){  Map.Entry<String,String> entry = it.next();
>   String key = entry.getKey();    String value = entry.getValue();    //……
> }

2.4、Collection和Map的区别:


Collection:单列集合,一次存一个元素


Map:双列集合,一次存一对集合,两个元素(对象)存在着映射关系

2.5、集合工具类:


Collections:操作集合(一般是list集合)的工具类。方法全为静态的


sort(List list);对list集合进行排序; sort(List list, Comparator c) 按指定比较器排序


fill(List list, T obj);将集合元素替换为指定对象;


swap(List list, int I, int j)交换集合指定位置的元素


shuffle(List list); 随机对集合元素排序


reverseOrder() :返回比较器,强行逆转实现Comparable接口的对象自然顺序


reverseOrder(Comparator c):返回比较器,强行逆转指定比较器的顺序

2.6、Collection和Collections的区别:


Collections:java.util下的工具类,实现对集合的查找、排序、替换、线程安全化等操作。


Collection:是java.util下的接口,是各种单列集合的父接口,实现此接口的有List和Set集合,存储对象并对其进行操作。

3、Arrays:


用于操作数组对象的工具类,全为静态方法


asList():将数组转为list集合


好处:可通过list集合的方法操作数组中的元素:


isEmpty()、contains()、indexOf()、set()


弊端:数组长度固定,不可使用集合的增删操作。


如果数组中存储的是基本数据类型,asList会将数组整体作为一个元素存入集合


集合转为数组:Collection.toArray();


好处:限定了对集合中的元素进行增删操作,只需获取元素

转载请注明:CodingBlog » java集合、IO流

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情