Java 集合框架
接口: 是代表集合的抽象数据类型。 例如 Collection、List、Set、Map 等。 之所以定义多个接口,是为了以不同的方式操作集合对象
实现(类): 是集合接口的具体实现。 从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
算法: 是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。 这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
1.List
List是元素有序并且可以重复的集合,称为序列
List可以精确的控制每个元素的插入位置,或删除某个位置的元素
List的两个主要实现类是ArrayList和LinkedList
List中添加,获取,删除元素;
List中是否包含某个元素;
List中根据索引将元素数值改变(替换);
List中查看(判断)元素的索引;
根据元素索引位置进行的判断;
利用List中索引位置重新生成一个新的list(截取集合);
对比两个List中的所有元素;
判断List是否为空;
返回Iterator集合对象;
将集合转换为字符串;
将集合转换为数组;
集合类型转换;
去重复等;
List<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
System.out.println(list);
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
System.out.println(list.get(3));
System.out.println("List集合的遍历");
for (String s:list){
System.out.println(s);
}
2.Set
Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类。
在判断重复元素的时候,Set集合会调用hashCode()和equal()方法来实现。
set检索元素效率低,而增删效率快,增删不会引起其他元素位置发生改变。
特点:无序,不允许重复,查询慢,增删快
Set<String> set=new HashSet<>();
set.add("e");
set.add("f");
set.add("g");
set.add("h");
System.out.println(set);
System.out.println("Set集合的遍历");
Iterator<String> iterator=set.iterator();
while (iterator.hasNext()){
String s=iterator.next();
System.out.println(s);
}
3.Map
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。
特点:键值储存,key无序不可重复
Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。HashMap底层采用哈希表的数据结构,非线程安全的。
Map<String,Object> map=new HashMap<>();
map.put("name","张三");
map.put("age","18");
map.put("sex","男");
System.out.println(map);
System.out.println("Map的遍历");
Set<String> keySet=map.keySet();
Iterator<String> iterator1=keySet.iterator();
while (iterator1.hasNext()){
String key=iterator1.next();
Object value=map.get(key);
System.out.println(key+"---"+value);
}