学了集合中的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类型(通常用于加载配 置文件) |