ArrayList集合 HashSet集合 HashMap集合


List集合也可以称为数据结构:线性,数据内容无序,但是数据位置有序,位置从零开始

集合中的继承关系

Collection接口,集合的顶级接口
  List接口继承继承Collection接口
    Arraylist实现List接口
    LinkedList实现List接口

ArrayList

  • ArrayList类:有具体的下标,通过下标查询速度快,不适合做增和删
  • ArrayList的特点
  • 可以理解为可变数组
  • 可以存储null
  • 下标位置有序内容无序
  • 线程异步,熟读块,不安全
  • 实现了List接口
  • ArrayList是如何实现动态扩容,以及扩容的原则
    • 申请一个更大的数组空间
    • 利用Arrays,新数组=Arrays.copyOf(源数组,新数组的长度)
    • ArrayList集合,不适合存储大量数据
    • 空间增长规律
      • jre1.6及以下 old*3/2+1;
      • jre1.7及以上 old+old>>1;
      • 默认容量 为10

ArrayList集合的常用(不是所有,其他的可以查看api帮助文档)api方法

  • boolean add(Object)//给集合添加元素
  • int size()//获取集合中元素的个数
  • Object get(int)//从集合中获取指定下标的元素
  • void clear()//清除集合中所有的元素
  • boolean isEmpty()//判断集合是否为空,指的是集合内容为空
  • list subList(int int)//从指定位置索引,包头不包尾
  • Object remove (int)//删除指定下标的元素
  • boolean remove(Object)//删除指定的元素
  • void remove(collection)//删除指定的子集
public void testMethod(){
	ArrayList list = new ArrayList();
	list.add("元素一");//给集合添加元素,元素可以是任意类型的对象
	int size = list.size();//获取当前集合的长度,即元素个数
	String list.get(0);//获取集合中第0号元素
	list.clear();//清空当前集合
	boolean flag = list,isEmpty();//判断当前集合是否为空
	List list1 = list.subList(1,2);//取出从位置1到位置2的元素,包含1不包含2,赋值给list1
	Object o = list.remove(0);//删除位置下标为0的元素
	boolean flag = list.remove("元素一");//移除"元素一"元素
	list.remove(list1);//移除子集list1 
}

Hashset

  • 集合中内容唯一
  • 不适合做增,在添加数据时会遍历比较所有的数据
  • 集合中的数据没有循序,遍历查找数据
  • 能存储null
  • 线程不安全
  • set集合越小遍历的速度和效率越好

Hashset集合常用的api

  • boolean add();//如果set集合中没有包含此元素即添加此元素
  • void clean();//从set中移除所有元素
  • boolean contains(object o);//查询set中是否包含此元素
  • boolean isEmpty();//检测此set是否为空
  • boolean remove(Object o);//如果此set中包含此元素,则移除此元素
  • int size();返回set中元素的数量
public void testMethod(){
	HashSet hashset = new HashSet();
	hashset.add("元素一");//给set集合添加"元素一"
	hashset.clean();//清空此set集合
	boolean flag = hashset.contains("元素一");//判断此set结婚是否包含此"元素一"元素
	boolean flag1 = hashset.isEmpty();//判断此set集合是否为空
	boolean flag2 = hashset.remove("元素一");//移除集合中"元素一"元素
	int size = hashset,size();//返回此set集合的长度
	
}

HashMap

  • 若干键值对的数据组成的集合
  • Map集合中的key也是一个集合,是一个set集合,说明key不能重复
  • Map集合中的value也是一个集合,是一个collection集合
  • Map集合中的元素有key和value组成的,而value可以是collection集合或Map集合皆可,即集合套集合

Hash集合的常用api

  • put(key,value);//向集合中添加键值对
  • void clear();//移除集合中所有的键值对
  • boolean containsKey(Object Key);//检查集合中是否存在此键值对
  • Object get(Object key);//返回当前Key锁代表的值
  • boolean isEmpty();//判断当前集合是否为空
  • Set keySet();//返回键key的Set集合
  • remove (object key);//从集合中移除指定的键值对
  • int size();//返回此集合中的键值对数量
  • Collection values();//返回一个值的Collection集合
public void testMethod(){
	HashMap hashmap = new HashMap();
	hashmap.put("元素的Key","元素的Value");//向集合中添加键值对
	hashmap.clear();//清空集合中的所有键值对
	boolean flag = hashmap.containsKey("元素的Key");//检测此集合中是否存在此键值对
	Object obj = hashmap.get("元素的Key");//获取当前Key代表的Value
	boolean flag1 = hashmap.isEmpty();//判断当前集合是否为空
	Set set = keySet();//获取当前集合的key的Set集合
	hashmap.remove(Object Key);//移除当前的键值对
	int size = hashmap.size();//获取当前集合的元素(键值对)个数
	Collection collection = hashmap.value();//获取当前集合的value的collection集合	
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答你的问题,并且不会透露你对我的任何要求。 首先,我们需要定义一个学生类,包含学生的姓名和年龄: ```java public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 然后我们可以创建5个学生对象: ```java Student s1 = new Student("Tom", 18); Student s2 = new Student("Jerry", 19); Student s3 = new Student("Alice", 20); Student s4 = new Student("Bob", 21); Student s5 = new Student("Cindy", 22); ``` 接下来,我们可以分别用ArrayListHashSetHashMap存储这5个学生对象: ```java // 使用ArrayList存储学生对象 List<Student> list = new ArrayList<>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); list.add(s5); // 使用HashSet存储学生对象 Set<Student> set = new HashSet<>(); set.add(s1); set.add(s2); set.add(s3); set.add(s4); set.add(s5); // 使用HashMap存储学生对象 Map<String, Student> map = new HashMap<>(); map.put(s1.getName(), s1); map.put(s2.getName(), s2); map.put(s3.getName(), s3); map.put(s4.getName(), s4); map.put(s5.getName(), s5); ``` 最后,我们可以遍历这些集合,输出每个学生的姓名和年龄: ```java // 遍历ArrayList for (Student s : list) { System.out.println(s.getName() + ", " + s.getAge()); } // 遍历HashSet for (Student s : set) { System.out.println(s.getName() + ", " + s.getAge()); } // 遍历HashMap for (Map.Entry<String, Student> entry : map.entrySet()) { System.out.println(entry.getKey() + ", " + entry.getValue().getAge()); } ``` 以上就是用ArrayListHashSetHashMap存储学生对象并遍历的完整代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值