Java集合的基础知识

集合

1.1集合类的特点

提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。

1.2集合类体系结构

1628691365528.png

1.3Collection集合概述
  1. 是单例集合的顶层接口,它表示一组对象,这些对象也被称为Collection的元素
  2. JDK不提供此接口的直接实现,它提供更具体的子接口实现
  3. 以多态的方式创建Collection对象
1.4Collection集合常用方法
    boolean add(E e);   添加元素
    boolean remove(Object o); 从集合中移除指定元素
    void clear();清空集合的元素
    boolean contains(Object o);判读集合中是否存在指定的元素
    boolean isEmpty();判断集合是否为空
    int size(); 集合的长度,也就是集合中元素的个数
    
1.5Collection集合的遍历
Iterator<E> iterator(); 返回此集合中元素的迭代器,通过集合的iterator()方法得到
E next(); 返回迭代的下一个元素
boolean hasNext(); 如果迭代具有更多元素,则返回true
    
public class CollectionDemo02 {
   
    public static void main(String[] args) {
   
        Collection<String>collection = new ArrayList<>();
        collection.add("12");
        collection.add("34");
        collection.add("156");
        collection.add("177");

        Iterator<String>iterator = collection.iterator();
        while (iterator.hasNext())
        {
   
            String s = iterator.next();
            System.out.println("s = " + s);
        }
    }
}
2.1List集合概述和特点

List集合概述

  1. 有序集合(也称为序列),用户可以控制每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
  2. 与Set集合不同,列表通常运行重复的元素
2.2List集合的方法
    void add(int index,E element);   在此集合中的指定位置插入指定的元素
    E element(int index);            删除指定索引处的元素,返回被删除的元素
    E set(int index,E element)       修改指定索引处的元素,返回被修改的元素
    E get(int index)                 返回指定索引处的元素
        
      public class CollectionDemo04 {
   
      public static void main(String[] args) {
   
      List<String> list = new ArrayList<>();
      list.add("hello");
      list.add("world");
      list.add("Java");
      list.add("Python");

      System.out.println("list = " + list);
      list.add(1,"sb")
      System.out.println("list = " + list);

      list.remove(1);
      System.out.println("list = " + list);
      System.out.println(list.set(1, "love"))
      System.out.println("list = " + list);

      System.out.println(list.get(3));

    }
}
2.3List集合的遍历
 	Iterator<Student>iterator = list.iterator();
        while (iterator.hasNext()){
   
            Student s = iterator.next();
            System.out.println(s.getName()+","+s.getAge());
        }

  for (int i = 0; i < list.size(); i++) {
   
            Student s = list.get(i);
            System.out.println(s.getName()+","+s.getAge());
        }
2.4并发修改异常

ConcurrentModificationException

产生原因: 迭代器遍历的过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值与实际修改值不一致。

解决方案:用for循环遍历,然后用集合对象做对应的操作即可

  //错误代码
Iterator<String>iterator = list.iterator();
        while (iterator.hasNext())
        {
   
            if (iterator.next().equals("wolrd")){
   
                list.add("23");
            }
        }

//修改后:
        for (int i = 0; i < list.size(); i++) {
   
         String s = list.get(i);
            if (s.equals("wolrd")){
   
                list.add("23");
            }
        }
2.5ListIterator

ListIterator: 列表迭代器

  1. 通过List集合的ListIterator()方法得到,所以说它是List集合特有的迭代器
  2. 用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置
 ListIterator中的常用方法
     E next(); 返回迭代中的下一个元素
     boolean hasNext(); 如果迭代具有更多元素,则返回true
     E previous(); 返回列表中的上一个元素
     boolean hasPrevious(); 如果此列表迭代器在相反遍历列表时具有更多元素,则返回true
     void add(E e): 将指定的元素插入列表   -------------> 可用来解决并发修改异常
    
        ListIterator<String>listIterator = list.listIterator();
        while (listIterator.hasNext())
        {
   
            if (listIterator.next().equals("hello"))
               listIterator.add("are");
        }
        System.out.println(list);

2.6LinkedList的特有方法
public void addFirst(E e); 在该列表开头插入指定的元素
public void addLast(E e);   将指定的元素追加到此列表的末尾
public E getFirst();  返回此列表的第一个元素
public E getLast();  返回此列表的最后一个元素
public E removeFirst();   从此列表删除并返回第一个元素
public E removeLast();   从此列表中删除并返回最后一个元素
3.1Set集合的特点

不包含重复元素的集合

没有带索引的方法,所以不能使用普通for循环遍历

HashSet: 对集合的迭代顺序不作任何保证

public class SetDemo {
   
    public static void main(String[] args) {
   
        Set<String> set = new HashSet<>();
        set.add("hello");
        set.add("world");
        set.add("javaee");

        //1.增强for循环遍历
        for (String s : set) {
   
            System.out.println("s = " + s);
        }

        //2.迭代器遍历
        Iterator<String>iterator = set.iterator();
        while (iterator.hasNext()){
   
            System.out.println(iterator.next());
        }
    }
}
哈希值

哈希值: 时jdk根据对象的地址或者字符串或者数字算出来的int类型的数值

Obejct类中有一个方法可以获取对象的哈希值

public int hashCode();

对象哈希值特点:

  1. 同一个对象多次调用hashCode()方法返回的哈希值相同
  2. 默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以让不同对象的哈希值相同
3.2HashSet集合特点
  1. 底层数据结构是哈希表
  2. 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
  3. 没有带索引的方法,所以不能使用普通for循环遍历
  4. 由于是Set集合,所以是不包含重复元素的集合
public class HashSet01 {
   
    public static void main(String[] args) {
   
        HashSet<String>hashSet = new HashSet<>();
        hashSet.add("hello");
        hashSet.add("hello");
        hashSet.add("world");
        hashSet.add("javaee"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集合Java编程中非常重要的一部分,它提供了一种方便的方式来处理一组对象。Java集合框架包括List、Set、Map等接口和实现它们的类。下面是Java集合基础知识的介绍: 1. List接口:List是一个有序的集合,它可以包含重复的元素。List接口的常用实现类有ArrayList和LinkedList。其中,ArrayList是一个动态数组,它可以自动扩容以容纳更多的元素;而LinkedList是一个双向链表,它可以快速地在列表中插入或删除元素。 2. Set接口:Set是一个不允许重复元素的集合。Set接口的常用实现类有HashSet和TreeSet。其中,HashSet是一个基于哈希表的实现,它可以快速地查找元素;而TreeSet是一个基于红黑树的实现,它可以对元素进行排序。 3. Map接口:Map是一个键值对的集合,它允许使用键来查找值。Map接口的常用实现类有HashMap和TreeMap。其中,HashMap是一个基于哈希表的实现,它可以快速地查找键值对;而TreeMap是一个基于红黑树的实现,它可以对键进行排序。 下面是一个示例代码,演示了如何使用ArrayList集合存储学生的成绩,并遍历这个集合: ```java // 创建一个ArrayList集合,向这个集合中存入学生的成绩 ArrayList<Integer> al = new ArrayList<Integer>(); al.add(78); al.add(67); // 对集合遍历 // 方式1 for (Object obj : al) { System.out.println(obj);} // 方式2 for (Integer i : al) { System.out.println(i); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值