JAVA 集合(Collections,泛型,set)

Collections

1.是一个集合工具类
2.特点:方法私有,方法都是静态的
3.使用:类名直接调用
4.方法
static <T> boolean addAll(Collection<? super T> c, T... elements)->批量添加元素
static void shuffle(List<?> list) ->将集合中的元素顺序打乱
static <T> void sort(List<T> list) ->将集合中的元素按照默认规则排序
static <T> void sort(List<T> list, Comparator<? super T> c)->将集合中的元素按照指定规则排序

public class Demo01Collections {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //static <T> boolean addAll(Collection<? super T> c, T... elements)->批量添加元素
        Collections.addAll(list,"张三","李四","王五","赵六","田七","朱八");
        System.out.println(list);
        //static void shuffle(List<?> list) ->将集合中的元素顺序打乱
        Collections.shuffle(list);
        System.out.println(list);
        //static <T> void sort(List<T> list) ->将集合中的元素按照默认规则排序-> ASCII码表
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("c.举头望明月");
        list1.add("a.床前明月光");
        list1.add("d.低头思故乡");
        list1.add("b.疑是地上霜");
        Collections.sort(list1);
        System.out.println(list1);
    }
}

扩展方法:Arrays类中的方法,List asList(T...a)直接指定元素,转存到list集合中

 public static void main(String[] args) {
     List<String> list = Arrays.asList("张三", "李四", "王五");
     System.out.println(list);
 }

泛型⭐⭐⭐⭐⭐

1.使用层面:统一类型,防止类型转换异常
注意:
a.泛型中的类型必须是引用类型
b.如果泛型不写,默认类型为Object
2.定义层面:
定义带有泛型的类,方法,接口,将来使用的时候给泛型确定什么类型,泛型就是什么类型,灵活,通用。

3.含有泛型的类

//含有泛型的类
public class 类名<E>{
}
//new 对象的时候确定类型

4.含有泛型的方法

修饰符 <E> 返回值类型 方法名(E e){
}
//调用方法的时候确定类型

5.含有泛型的接口

public interface 接口名<E>{
}

//1.在实现类的时候不确定类型,只能在new的时候确定类型
public interface MyList <E>{
    public boolean add(E e);
}

public class MyArrayList1<E> implements MyList<E>{
    //定义一个数组,充当ArrayList底层的数组,长度直接规定为10
    Object[] obj = new Object[10];
    //定义size,代表集合元素个数
    int size;
    /**
     * 定义一个add方法,参数类型需要和泛型类型保持一致
     *
     * 数据类型为E  变量名随便取
     */
    public boolean add(E e){
        obj[size] = e;
        size++;
        return true;
    }
    /**
     * 定义一个get方法,根据索引获取元素
     */
    public E get(int index){
        return (E) obj[index];
    }
    @Override
    public String toString() {
        return Arrays.toString(obj);
    }
}
public class Demo04Genericity {
    public static void main(String[] args) {
        MyArrayList1<String> list1 = new MyArrayList1<>();
        list1.add("张三");
        list1.add("李四");
        System.out.println(list1.get(0));

    }
}

//2.在实现类的时候就确定类型
public interface MyIterator <E>{
    E next();
}

public class MyScanner implements MyIterator<String>{
    @Override
    public String next() {
        return "涛哥和金莲的故事";
    }
}
public class Demo05Genericity {
    public static void main(String[] args) {
        MyScanner myScanner = new MyScanner();
        String result = myScanner.next();
        System.out.println("result = " + result);
    }
}

6.泛型通配符
上限

<? extends 类型>
?接收的extends后面的本类以及子类类型

下限

<? super 类型>
?接收的是super后面的本类以及父类类型

set集合⭐⭐⭐⭐⭐

1.Hashset

特点

a.元素唯一
b.元素无序
c.线程不安全
d.无索引

底层数据结构:

哈希表
jdk8前 哈希表=数组+链表
jdk8后 哈希表=数组+链表+红黑树(红黑树为了查找更快)

方法

和Collection一样

遍历(没索引)

增强for
迭代器

2.LinkedHashSet(HashSet的一个子类)
特点

a.元素唯一
b.元素有序
c.线程不安全
d.无索引

底层数据结构

哈希表+双向链表

使用

和HashSet一样

3 set集合如何去重复

1.先计算元素的哈希值(重写hashCode方法),再比较内容(重写equals方法)
2.先比较哈希值,如果哈希值不一样,直接存
3.如果哈希值一样,再比较内容
a.如果哈希值一样,内容不一样,存
b.如果哈希值一样,内容也一样,去重复

4.HashSet存储自定义类型如何去重复

1.如果HashSet存储自定义类型,如何去重复呢?重写hashCode和equals方法,让HashSet比较属性的哈希值以及属性的内容
2.如果不重写hashCode和equals方法,默认调用的是Object中的,不同的对象,肯定哈希值不一样,equals比较对象的地址值也不一样,所以此时即使对象的属性值一样,也不能去重复

笔记来源 尚硅谷

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java 集合是一个存储对象的数据结构,可以在程序中方便地进行数据的存储、检索和操作。它是 Java 标准库的一部分,提供了许多内置的容器类,如 List、Set、Map 等。这些容器类都实现了 Collection 接口,定义了一些基本的数据存储和操作方法,如 add、remove、size 等。 通过使用 Java 集合,可以简化代码,提高程序的可读性和可维护性,也可以提高程序的效率。 ### 回答2: Java集合是用于存储和处理一组相关数据对象的容器。它是Java编程语言中非常重要的一部分,提供了一系列接口和类来实现不同类型和功能的集合Java集合框架提供了多种集合实现,以满足不同的应用需求。 Java集合可以根据其结构分为两大类:一是单列集合,如List、Set和Queue;二是双列集合,如Map。 List是有序的集合,可以包含重复元素。它有多个实现类,其中比较常用的是ArrayList和LinkedList。ArrayList底层采用动态数组实现,支持随机访问,适用于频繁访问和修改的场景。而LinkedList底层采用双向链表实现,适用于频繁插入和删除的场景。 Set是无序且不可包含重复元素的集合。它有多个实现类,例如HashSet和TreeSet。HashSet基于哈希表实现,具有较快的元素查找和插入速度,而TreeSet基于红黑树实现,可以按照元素的自然顺序进行排序。 Queue是一种先进先出(FIFO)的集合,它用于存储和操作待处理元素。常用的实现类有LinkedList和PriorityQueue。 Map是一种键值对的集合,每个键对应一个唯一的值。常见的实现类有HashMap和TreeMap。HashMap基于哈希表实现,可以快速进行键值对的查找和插入操作,而TreeMap则基于红黑树实现,可以按照键的自然顺序对键值对进行排序。 除了以上常用的集合类,Java集合框架还提供了一些辅助类和接口,如Collections和Iterator,用于提供集合的各种操作和迭代访问。 Java集合提供了一种便捷的方式来管理和操作数据,极大地简化了编程工作。开发者可以根据需求选择合适的集合类,提高代码的可读性、可维护性和性能。 ### 回答3: Java集合Java语言中的一种数据结构,用于存储和操作一组数据。Java集合提供了一系列的接口和类,用于实现不同类型的集合Java集合框架主要由以下几个核心接口和类组成: 1. Collection接口:是所有集合类的父接口,定义了集合类的基本操作,如添加、删除、遍历等。常用的实现类有List(有序可重复集合)、Set(无序不可重复集合)和Queue(队列)。 2. Map接口:用于存储键值对的数据结构,每个键唯一对应一个值。Map接口的常用实现类有HashMap、TreeMap和LinkedHashMap。 3. ArrayList类:实现了List接口,基于数组实现的动态数组。它可以根据需要自动扩容,支持动态增删元素。 4. LinkedList类:实现了List和Queue接口,基于双向链表实现的。它可以高效地完成插入、删除等操作,适用于频繁插入和删除操作的场景。 5. HashSet类:实现了Set接口,基于哈希表实现的无序不可重复集合。它使用了哈希函数来计算元素的存储位置,查找元素的速度非常快。 6. HashMap类:实现了Map接口,基于哈希表实现的键值对集合。它可以根据键快速地查找对应的值,具有很高的查找效率。 Java集合提供了丰富的功能和操作方法,可以方便地进行元素的增删改查、遍历、排序以及集合间的操作,如并集、交集和差集等。它们的使用可以大大简化程序的编写和维护工作,提高代码的可读性和可维护性。 同时,Java集合还具有泛型的特性,使得集合类可以更加灵活地存储不同类型的数据。通过明确指定集合存储的元素类型,可以在编译时提供更好的类型检查,减少运行时错误的发生。 总之,Java集合Java程序开发中非常重要和常用的一个部分,它提供了丰富的功能和灵活的数据存储方式,可以满足各种需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值