一、Map集合
(1)、Map集合常见的操作方式
1.添加:put(K key,V value):如果添加时出现相同的键,那么新的值会替换掉旧的值,并且put方法会返回被覆盖的值。(返回对应的键原来的值)。
putAll(Map<? extends K,? extends V> m) :从指定映射中将所有映射关系复制到此映射中(可选操作)。
2.删除:clear():从此映射中移除所有映射关系(可选操作)。
remove(Objcet key):如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
3.判断:containsKey(Object key):如果此映射包含指定键的映射关系,则返回 true。
containsValue(Object value) :如果此映射将一个或多个键映射到指定值,则返回 true。
equals(Object o):比较指定的对象与此映射是否相等。
isEmpty():如果此映射未包含键-值映射关系,则返回 true。
4.获取:get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回
size():返回此映射中的键值关系数。
entrySet():返回此映射中包含的映射关系的 Set 视图。
keySet():返回此映射中包含的键的 Set 视图。
values():返回此映射中包含的值的 Collection 视图
(2)Hashtable,HashMap,TreeMap的区别
Hashtable:任何非 null 对象都可以用作key和value值。(该集合线程同步)
HashMap:允许使用 null 作为key和value值(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
TreeMap:底层是二叉树结构,线程不同步,且具有顺序(对键进行了排序)。
(3)遍历Map集合的几种方式
Map<String,String> map = new HashMap<String,String>(){};
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");
//第一种方式
Set<String> keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext()){
String key = (String)it.next();
String value = map.get(key);
System.out.println(key+"------"+value);
}
//第二种方式
Set<Entry<String,String>> set = map.entrySet();
Iterator it1 = set.iterator();
while(it1.hasNext()){
Entry<String,String> entry = (Entry<String,String>)it1.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"------"+value);
}
//第三种方式
for(Entry<String,String> entry : map.entrySet()){
System.out.println((String)entry.getKey() + "------"
+ (String)entry.getValue());
}
注意map.entrySet()取得是映射关系。
二、Collections类
(1)sort(List list)根据元素的自然顺序 对指定列表按升序进行排序。
(2)max()根据元素的自然顺序,返回给定 collection 的最大元素。
(3)binarySearch 如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入列表的那一点.
(4)fill(list,T obj)使用指定元素替换指定列表中的所有元素。
(5)replaceAll(List list, T oldVal, T newVal)
使用另一个值替换列表中出现的所有某一指定值。
(6)reverse(list) 反转指定列表中元素的顺序。
(7)reverseOrder()返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
(8)reverseOrder(Comparator cmp) 返回一个比较器,它强行逆转指定比较器的顺序。
三、Arrays类 :用于操作数组的工具类。
(1)asList(数组引用):将数组变成list集合。可以使用集合中的方法来操作数组中的元素。注意a、:将数组变成list,不可以使用list的增删方法。 b、如果数组中的元素都是对象,那么变成集合后,数组中的元素直接转成list集合中的元素。如果数组中的元素为基本数据类型,那么数组将作为集合中的元素。
将集合变成数组
list.toArray();
为什么要讲集合变数组:为了限制对元素的操作
注意:a、当指定类型的数组长度大于集合长度时,该方法重新开辟一块内存,用来装数组。b、当指定类型的数组长度小于集合长度时,直接使用传递进来的数组。
(2)fill():用于初始化数组。
四、可变参数
其实就是一种数组作为参数的简写形式,但不必每次手动创建数组对象,只要将要操作的元素作为参数传递,隐试将传进来的参数作为数组。
例如
package CollectionDemo;
public class Demo6 {
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4 };
show(1, 2, 3);
show(1, 2, 3, 4);
}
public static void show(int... arr) {
System.out.println(arr.length);
}
}
输出结果
3
4
注意:可变参数一定要定义在参数列表的最后。
五,静态导入
import static java.util.System.*;
可以直接使用 out.ptintln();