Java集合【List、Set、Map】案例整合以及集合实现类的区别?

学了集合中的List、Set、Map,来进入代码演练一番吧~

在这里插入图片描述
实现类: (ArrayList)

package p1;

import java.util.ArrayList;

public class TestArrayList {
	public static void main(String[] args) {
    	//创建集合对象并以手机-Phone为泛型
   	 	ArrayList<Phone> list=new ArrayList<>();
   	    //new对象两种方式
    	//第一种
    	Phone phone=new Phone("华为","黑色",10000.0);
    	list.add(phone);     //添加对象
    	//第二种
    	list.add(new Phone("苹果","白色",5000.0));
    	//遍历集合
    	for (Phone p: list) {
        	System.out.println(p);
    	}
    	System.out.println("------打印输出带有-华为-品牌的手机对象信息------");
    	for (Phone p:list){
        	if (p.getBrand().equals("华为")){
            	System.out.println("手机品牌:"+p);
        	}
    	}
	}
}

//手机类---此实体类不给注释(不懂的翻之前的案例)
class Phone{
	private String brand;
	private String color;
	private Double price;

	@Override
	public String toString() {
    	return "Phone{" +
            	"brand='" + brand + '\'' +
            	", color='" + color + '\'' +
            	", price=" + price +
            	'}';
	}

	public String getBrand() {
    	return brand;
	}

	public void setBrand(String brand) {
    	this.brand = brand;
	}

	public String getColor() {
    	return color;
	}

	public void setColor(String color) {
    	this.color = color;
	}

	public Double getPrice() {
    	return price;
	}

	public void setPrice(Double price) {
    	this.price = price;
	}

	public Phone(String brand, String color, Double price) {
    	this.brand = brand;
    	this.color = color;
    	this.price = price;
	}

	public Phone() {
	}
}

打印结果为

在这里插入图片描述
实现类: (HashSet)

package p1;

import java.util.LinkedHashSet;
import java.util.Random;

public class TestSetRandom {
	public static void main(String[] args) {
    	//随机产生10个0-50之间的整数,存储在集合中且数据不能重复
    	Random random=new Random();
    	LinkedHashSet<Integer> set=new LinkedHashSet<>();
    	for (int i = 0; i < 10; i++) {
        	int num = random.nextInt(50);
        	set.add(num);
    	}
    	for (Integer integer: set) {
        	System.out.println("10个0-50之间的整数:"+integer);
    	}
	}
}

打印结果为

在这里插入图片描述
实现类: (HashMap)

package p1;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class TestHashMap {
	public static void main(String[] args) {
    	HashMap<String,String> map=new HashMap<>();
    	map.put("001","三娃");
    	map.put("002","二娃");
    	String value=map.put("001","大娃");
    	System.out.println("集合中键值的个数:"+map.size());
    	System.out.println("被覆盖的value:"+value);
    	System.out.println("根据键获取值:"+map.get("001"));
    	System.out.println("判断map中是否包含某个键:"+map.containsKey("003"));
    	System.out.println("判断map中是否包含某个值:"+map.containsValue("大娃"));
    	//键遍历
    	//通过map.keySet()获取值
    	Set<String> keys = map.keySet();
    	//通过遍历set集合获取每一个键
    	for(String k:keys){
        	//通过map.get(key)获取对于的value值
        	String v = map.get(k);
        	System.out.println("键:"+k+"-"+"值:"+v);
    	}
    	System.out.println("------键值对遍历------");
    	// map.entrySet()获取键值对
    	Set<Map.Entry<String, String>> kvs = map.entrySet();
    	//遍历Set---kvs 获取每一个键值对
    	for(Map.Entry<String,String> kv:kvs){
        	//kv.getKey()  获取键
        	String k = kv.getKey();
        	//kv.getValue()   获取值
        	String v = kv.getValue();
        	System.out.println("键:"+k+"-"+"值:"+v);
    	}
	}
}

打印结果为

在这里插入图片描述
List不同实现类的区别

实现类 区别
ArrayList 底层使用数组实 现,查询效率较高,增删操作时效率较低;jdk1.2版本,线程不安全,并发效率高
Vector 底层使用数组实现,查询效率较高,增删操作时效率较低; jdk1.0版本,线程安全,并发效率低
LinkedList 底层使用链表实现,查询效率相对较低,增删的效率较高

Set不同实现类的区别

实现类 区别
HashSet 为了保证元素内容不重复,存储对象对应类中需要覆盖 HashCode 和equals方法
LinkedHashSet HashSet子类,根据添加的顺序进行存储

Map不同实现类的区别

实现类 区别
HashMap JDK1.2版本,线程不安全,并发效率高,允许null作为key/value
LinkedHashMap HashMap子类,按照键添加的顺序进行存储
Hashtable jdk1.0版本,线程安全,并发效率低,不允许null作为 key/value
Properties Hashtable子类, 键和值默认为String类型(通常用于加载配 置文件)

猜你喜欢

转载自blog.csdn.net/weixin_60768515/article/details/123957350