目录
一、集合类概述
二、Collection接口
三、Collection实例
四、Set集合(无序)
五、List集合(有序)
5.1、概述
5.2、索引问题
5.3、List接口的常用实现类有ArrayList与LinkedList
5.4、LinkedList类采用链表结构保存对象
六、Map集合
6.1、概述
6.2、实例
6.3、遍历map集合常用的四种方式
1.Java语言的集合类由java.util包提供一部分
2.数据与集合类的异同
3.常用的集合有Map集合,List集合,Set集合,set与List实现Collection接口
package com.list.dome;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class ListDome02 {
public static void main(String []args){
//实例化集合类对象
Collection list =new ArrayList<>();
//添加数据
list.add("a");
list.add("b");
list.add("c");
//创建迭代器
Iterator it =list.iterator();
//判断是否有下一个元素
while(it.hasNext()){
//依次获取集合中元素
String str =(String) it.next();
System.out.println(str);
}
System.out.println("ArryList存在线程不安全的隐患");
}
}
1.Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但Set集合中不能包含重复对象
2.Set集合由Set接口和Set接口的实现类组成。Set接口也继承了Collection接口。
3.常用方法
import java.util.*;
public class UpdateStu implements Comparable
import java.util.*;
public class UpdateStu {
public static void main(String[] args) {
Map map = new HashMap<>(); // 创建Map实例
map.put("01", "李同学"); // 向集合中添加对象
map.put("02", "魏同学");
Set set = map.keySet(); // 构建Map集合中所有key对象的集合
Iterator it = set.iterator(); // 创建集合迭代器
System.out.println("key集合中的元素:");
while (it.hasNext()) { // 遍历集合
System.out.println(it.next());
}
Collection coll = map.values();
// 构建Map集合中所有values值集合
it = coll.iterator();
System.out.println("values集合中的元素:");
while (it.hasNext()) { // 遍历集合
System.out.println(it.next());
}
}
}
package com.map.test;
import java.util.LinkedList;
import java.util.List;
public class testList {
public static void main(String[] args){
//指定类型为包装类Integer
List list = new LinkedList<>();
for(int i=1;i<100;i++){
list.add(new Integer(i));
}
list.remove(list.get(30));
System.out.println("执行成功");
}
}
package com.map.jar;
public class Emp {
@SuppressWarnings("unused") //抑制警告
private String e_name;
private String e_id;
public String getE_name() {
return e_name;
}
public void setE_name(String e_name) {
this.e_name = e_name;
}
public String getE_id() {
return e_id;
}
public void setE_id(String e_id) {
this.e_id = e_id;
}
}
ArrayList类实现了可变的数组,允许所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问
package com.list.dome;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class ListDome02 {
public static void main(String []args){
//实例化集合类对象
Collection list =new ArrayList<>();
//添加数据
list.add("a");
list.add("b");
list.add("c");
//创建迭代器
Iterator it =list.iterator();
//判断是否有下一个元素
while(it.hasNext()){
//依次获取集合中元素
String str =(String) it.next();
System.out.println(str);
}
System.out.println("ArryList存在线程不安全的隐患");
}
}
package com.list.dome;
import java.util.ArrayList;
import java.util.List;
public class listDeme03 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
List list = new ArrayList<>(); // 创建集合对象
list.add("a"); // 向集合添加元素
list.add("b");
list.add("c");
int i = (int) (Math.random() * (list.size() - 1)); // 获得0~1之间的随机数
System.out.println("随机获取数组中的元素:" + list.get(i));
list.remove(2); // 将指定索引位置的元素从集合中移除
System.out.println("将索引是'2'的元素从数组移除后,数组中的元素是:");
for (int j = 0; j < list.size(); j++) { // 循环遍历集合
System.out.println(list.get(j));
}
}
}
package com.list.dome;
import java.util.LinkedList;
public class listDome01 {
public static void main(String[] args){
String a="A",s="S",z="Z",ListTest="LinkdeListTest";
//实例化linkedlist第一种方式
LinkedListlist = new LinkedList();
//第二种方式 需要创建接口方能使用
//collection list = new LinkedList();
//索引值为0
list.add(a);
//索引值为1
list.add(s);
//索引值为2
list.add(z);
//输出列表中开头(第一个)的对象
System.out.println(list.getFirst());
//向列表开头添加一个对象
list.add(ListTest);
//再次输出列表中开头的对象,这时输出结果由A变成了LinkdeListTest
System.out.println(list.getFirst());
//移除列表中开头的对象
list.removeFirst();
//再次获取列表中开头的对象
System.out.println(list.getFirst());
System.out.println("-----Java语言区分大小写-------");
System.out.println("-----list集合存放有序对象--------");
}
}
使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合。
3.Map接口常用的实现类有HashMap和TreeMap。建议使用HashMap类实现Map集合,因为由HashMap类实现的Map集合对 于添加和删除映射关系效率更高
4.HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找
5.而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象也存在一定的顺序,应该使用TreeMap类实现Map集合
Emp类(生成get,set方法)
package com.map.test;
public class Emp {
private String e_name;
private String e_id;
//有参数的构造方法
public Emp(String e_name,String e_id){
this.e_name=e_name;
this.e_id=e_id;
}
//
public String getE_name() {
return e_name;
}
public void setE_name(String e_name) {
this.e_name = e_name;
}
public String getE_id() {
return e_id;
}
public void setE_id(String e_id) {
this.e_id = e_id;
}
}
测试类(Text.java)
package com.map.test;
import java.util.Map;
import java.util.TreeMap;
public class Test {
public static void main(String[] args){
//使map接口有一定的顺序,使用实现类TreeMap实现map接口,实例化一个TreeMap实现类
Map map = new TreeMap<>();
//创建e_id,e_name的映射关系
Emp emp1 = new Emp("001","张三");
Emp emp2 = new Emp("002","王五");
Emp emp3 = new Emp("005","赵四");
Emp emp4 = new Emp("009","黎六");
Emp emp5 = new Emp("010","欧奇");
//把映射关系(键值对)添加到TreeMap集合类中
map.put(emp1.getE_id(),emp1.getE_name());
map.put(emp2.getE_id(),emp2.getE_name());
map.put(emp3.getE_id(),emp3.getE_name());
map.put(emp4.getE_id(),emp4.getE_name());
map.put(emp5.getE_id(),emp5.getE_name());
//从集合中移除e_id为010的映射关系
map.remove("010");
//遍历集合返回key
for(String string : map.keySet()){
System.out.println(map.get(string));
}
}
}
package com.map.test;
public class Emp {
private String e_name;
private String e_id;
//有参数的构造方法
public Emp(String e_name,String e_id){
this.e_name=e_name;
this.e_id=e_id;
}
//
public String getE_name() {
return e_name;
}
public void setE_name(String e_name) {
this.e_name = e_name;
}
public String getE_id() {
return e_id;
}
public void setE_id(String e_id) {
this.e_id = e_id;
}
}
package com.map.jar;
import java.util.HashMap;
import java.util.Map;
public class TestMap {
public static void main(String[] args){
//实现Map接口的第一种实现类TreeMap,有序
//Map map =new TreeMap();
//实现接口的第二种实现类HashMap,通过哈希码对
//Map map =new HashMap();
Map map =new HashMap();
//创建e_id,e_name的映射关系
Emp emp1 = new Emp("001","张三");
Emp emp2 = new Emp("002","王五");
Emp emp3 = new Emp("005","赵四");
Emp emp4 = new Emp("009","黎六");
Emp emp5 = new Emp("010","欧奇");
//把映射关系(键值对)添加到TreeMap集合类中
map.put(emp1.getE_id(),emp1.getE_name());
map.put(emp2.getE_id(),emp2.getE_name());
map.put(emp3.getE_id(),emp3.getE_name());
map.put(emp4.getE_id(),emp4.getE_name());
map.put(emp5.getE_id(),emp5.getE_name());
}
}
for(String string:map.keySet()){
System.out.println("key="+string+"vaule="+map.get(string));
System.out.println("第一种方式:通过map.keySet遍历key和value");
}
Iterator> it=map.entrySet().iterator();
while(it.hasNext()){
Map.Entryentry=it.next();
System.out.println("key="+entry.getKey()+"value="+entry.getValue());
}
for(Map.Entryentry:map.entrySet()){
System.out.println("key="+entry.getKey()+"value="+entry.getValue());
}
for(String value:map.values()){
System.out.println("value="+value);
}