Java之三大集合框架
今天来说说JAVA的集合框架那那些事儿~
首先要知道集合框架是支持泛型技术的
一、List集合
a) A)List的超级父类:Collection
b) ArrayList(重点)
i. 存储数据的方式:底层还是通过数组方式来存储
ii. List集合中,如果定义集合对象的时候,不确定类型,则什么类型对象都可以直接存储进去,取出来统一都是Object,后续需要自己手动强转指定类型
iii. 集合设计:泛型方式进行类型指定
1. List<具体类型>
2. 特点:有序队列、可重复的容器
iv. 其他的API
1. 对集合的操作:增(往容器中添加元素)
删(删除指定元素):remove removeAll clear
查(获取指定元素):get
改(更新指定元素):set
2. 其他:获取大小:size 判断是否包含:containts indexOf
例如:
public class Test {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
ArrayList<String> list1=new ArrayList<String>();
//往队列容器中添加元素
list.add("list");
list.add("arraylist");
list.add("setlist");
//获取指定位置的元素
System.out.println(list.get(1));
//输出队列所有元素
System.out.println(list);
//获取首次出现的指定元素的索引
System.out.println(list.indexOf("setlist"));
//获取最后一次出现的指定元素的索引
System.out.println(list.lastIndexOf("arraylist"));
//校验指定元素是否在该队列中
System.out.println(list.contains("list"));
//将list中指定元素加入到list1中
list1.add("list");
System.out.println(list1);
//将list列表中元素全部加入list1中
list1.addAll(list);
System.out.println(list1);
//用指定元素代替列表中指定位置的元素
//list.set(1,"how");
//System.out.println(list);
//该列表的大小
System.out.println(list.size());
//清除指定位置的元素
System.out.println(list.remove(0));
//输出清除后的队列所有元素
System.out.println(list);
//清空队列
list.clear();
System.out.println(list);
//判断该列表是否为空
System.out.println(list.isEmpty());
}
}
运行结果:
arraylist
[list, arraylist, setlist]
2
1
true
[list]
[list, list, arraylist, setlist]
3
list
[arraylist, setlist]
[]
true
二、Set集合
c) Set的超级父接口类:Collection
d) Set的相关理解
i. 特点:元素不可重复、无序的
ii. 遍历元素:迭代(迭代器)
iii. 注意:底层并非真正无序,还是遵循hash算法来保证存储顺序(但是我们作为使用者,就理解为无序)
集合中是不能有重复元素,如果你添加一个重复元素进去,就加不进去
e) 常用API操作:增删查
例如:
public class Test {
public static void main(String[] args) {
HashSet<String> set=new HashSet<String>();
set.add("China");
set.add("Jpan");
set.add("USA");
set.add("England");
//验证set集合元素不能重复
boolean value=set.add("USA");
System.out.println(set.size());
//校验该集合中是否包含指定元素
System.out.println(set.contains("China"));
System.out.println(set);
System.out.println(value);
//清除指定元素
System.out.println(set.remove("USA"));
//如何遍历集合
//1获取set迭代器
Iterator<String> ite=set.iterator();
//判断set集合中是否有下一个元素
while(ite.hasNext()){
String str=ite.next();
System.out.println(str);
}
set.clear();
System.out.println(set);
}
}
运行结果:
4
true
[Jpan, USA, China, England]
false
true
Jpan
China
England
[]
三、Map集合
a) Map集合:不是collection的直接接口子类
b) 使用方式
i. 底层使用机制:k+v的存储方式:键值对
ii. 一条数据,是由两部分组成:键和值
iii. 如何遍历map集合
iv. 如果说放(put)了一个相同的键到map中,则新元素会替换原来的元素,会把替换掉的元素返回出来,你可以接收到,并做后续处理
例如:
public class Test {
public static void main(String[] args) {
HashMap<String,String> map=new HashMap<String,String>();
//增删查改操作
map.put("a", "China");
map.put("b","Indian");
map.put("c","Itey");
map.put("d","Canada");
//输出该集合
System.out.println(map);
//体现可重复性(替换)
String old=map.put("b","USA");
//替换后的集合输出
System.out.println(map);
//获取指定元素
System.out.println(map.get("d"));
//获取代换的元素
System.out.println(old);
//遍历map,通过键取值
//1.获取所有的键
Set<String> keys=map.keySet();
//2.获取键集合的迭代器
Iterator<String> ite=keys.iterator();
//3.迭代器的集合
while(ite.hasNext()){
String key=ite.next();
//相应键对应的值
String value=map.get(key);
//输出键
System.out.println(key);
//输出值
System.out.println(value);
}
}
}
运行结果:
{a=China, b=Indian, c=Itey, d=Canada}
{a=China, b=USA, c=Itey, d=Canada}
Canada
Indian
a
China
b
USA
c
Itey
d
Canada