Java之三大集合框架

今天来说说JAVA的集合框架那那些事儿~

首先要知道集合框架是支持泛型技术的

一、List集合

a) A)List的超级父类:Collection

b) ArrayList(重点)

i. 存储数据的方式:底层还是通过数组方式来存储

ii. List集合中,如果定义集合对象的时候,不确定类型,则什么类型对象都可以直接存储进去,取出来统一都是Object,后续需要自己手动强转指定类型

java三个long集合整合_框架

 

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. 一条数据,是由两部分组成:键和值

java三个long集合整合_编程语言_02

 

iii. 如何遍历map集合

java三个long集合整合_泛型_03

 

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