首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java——集合篇

Java——集合篇

原创
作者头像
用户11453640
发布2025-01-18 23:31:00
发布2025-01-18 23:31:00
1400
举报
文章被收录于专栏:JavaJava

Java集合基本分两种,一是Collection 二是Map。

一、Collection集合

Collection接口有两个子接口,分别是List和Set集合。

1、Set集合

(1).Set集合的特点:

<1>无序的(插入的顺序和读取的顺序有可能不一致,LinkedHashSet特例)

<2>没有重复的元素

(2).Set集合常用类 :

HashSet 顺序存储结构

TreeSet 可以实现排序功能

LinkedHashSet 链式存储结构,与HashSet的区别主要在存储方式上

(3).对Set集合的遍历:

第一种方式 :迭代器Iterator ,hasNext()判断有没有下一个元素 ,next()获取当前元素

第一步,通过集合的iterator()获取迭代器Iterator

第二步,通过迭代器hasNext()判断集合中是否存在元素

第三步,通过next()获取当前的元素

代码语言:txt
复制
import java.util.*;
public class TestSet {
	public static void main(String[] args){
		Set set= new HashSet();//创建一个hashset集合

		//set添加元素
		Student s1 = new Student(1,"张三");
		Student s2 = new Student(2,"李四");
		Student s3 = new Student(3,"王五");
		Student s4 = new Student(4,"赵六");
		set.add(s1);
		set.add(s2);
		set.add(s3);
		set.add(s4);
		set.add("孙七");
		set.add(null);
		
		Iterator it = set.iterator();
		while(it.hasNext()){
			Object o = it.next();
			if(o instanceof Student){
				Student stu = (Student)o;
				System.out.println(stu.getSname());
			}else{
				System.out.println("该元素类型不能获取到名字");
			}
		}
	}
}

第二种方式: foreach循环(增强for循环) 只适合遍历

代码语言:txt
复制
       for(Object o : set){
          if(o instanceof Student){
             Student stu = (Student)o;
             System.out.println(stu.toString());
          }
       }

2、List集合

List集合的特点 :

(1)有序的(插入的顺序和读取的顺序是一致的)

(2)允许有重复的元素

List的常用类

ArrayList 顺序存储结构 ,线程不安全的

LinkedList 链式存储结构

Vector 与ArrayList一样的,每个方法都使用Synchronized关键字修饰,线程安全的(重量级锁)<几乎不用,实现线程安全一般会采用CopyOnWriteArrayList>

代码语言:txt
复制
List list = new ArrayList();
list.add(new Student());
list.remove(0);

3、Map集合

.特点:(1)键值对key-value

(2)key唯一的(HashSet的实现原理其实就用到了HashMap的key 唯一性)

实现类

HashMap 数组实现的 1.8之前数组+单链表 ,1.8及之后数组+链表+红黑树(B-tree)

LinkedHashMap

TreeMap

HashTable和HashMap的区别:(1)HashTable线程安全的,HashMap线程不安全

(2)HashTable的key不能为null,HashMap的key可以为null

代码语言:txt
复制
Map map = new HashMap();//创建一个map集合

map.put("name","张三");  //value可以为字符串
map.put(new Integer(3),4);//可以为数值
map.put("stu1",new Student());//可以为对象
map.put("students",new ArrayList());//可以为集合

Map遍历

两种方式

代码语言:txt
复制
Map<String,String> map = new HashMap<>();
//第一种
for(Map.Entry<String,String> entry : map.entrySet()){
            String key = entry.getKey();
            String value = entry.getValue();
        }
//第二种   
for (String key : map.keySet()){
            String value = map.get(key);
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Collection集合
    • 1、Set集合
    • 2、List集合
    • 3、Map集合
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档