Java集合与泛型中的几个陷阱,你掉进了几个?

下面我总结了集合、泛型、数组转集合等一些常见的陷进,认真看完,相信你绝对有所收获。

1、List ,List<?> 与 List<Object> 有区别吗?

说实话,我敢保证很多人是不知道 List, List<?> 与 List<Object> 之间的区别的。

1、我们先来看看 List 与 List<Object>

很多可能觉得 List<Object>的用法与 List 是一样的,例如很多人认为

List<Object> list;

List list;

这两种定义方法是一模一样的,然而他们是不一样的。看下面一段代码

    List<Integer> t1 = new ArrayList<>();
    // 编译通过
    List t2 = t1;
    //编译失败
    List<Object> t3 = t1;

t1 可以赋给 t2, 但是 t1 不能赋给 t3,会抛出如下异常

从这里可以看出

List list;

List<Object> list;

是有区别的,List 变量可以接受任何泛型的变量,而 List

原文地址:https://www.cnblogs.com/xiaozhuzhuchuangdiqiu/p/10459033.html

时间: 2024-10-13 02:16:34

Java集合与泛型中的几个陷阱,你掉进了几个?的相关文章

浅入深出之Java集合框架(中)

Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架(下)>. 目 录 浅入深出之Java集合框架(上) 浅入深出之Java集合框架(中)   浅入深出之Java集合框架(下) 努力赶制中..关注后更新会提醒哦! 前 言 在<浅入深出之Java集合框架(上)>中介绍了List接口和Set接口的基本操作,在这篇文章中,我将介绍关于Map接口的基

java集合框架--泛型

1.泛型概述 泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行.也被称为参数化类型,可以把类型当做参数一样传递过来,在传递过来之前并不明确,但是在使用的时候就明确了. 泛型是JDK5以后出现的新特性. 2.泛型出现的原因1 package com; import java.util.ArrayList; import java.util.Iterator; public class GenericDemo { public static void main(

黑马程序员---java基础-Java集合与泛型

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.集合 1.集合框架体系 2.集合与数组的区别 <1:数组是固定长度:集合可变长度. <2:数组可以存储基本数据类型或者引用数据类型:集合只能存储引用数据 类型. <3:数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同数 据类型. ** 集合内容可分为两大部分Collection.Map 3.Collection (一)List(抽象类) List集合判断元素是否相同,依

java集合框架---泛型总结

/* 泛型:指定集合类型,在运行而不是编译时时就发现问题,消除安全隐患.避免强转. */ package pack; import java.util.ArrayList; import java.util.Iterator; /*public class Main { public static void sys(Object obj) { System.out.println(obj); } public static void main(String[] args) { TreeSet<S

java集合,泛型简单总结

1.set中装的对象是没顺序不可以重复.重复的判断:只要两个对象equals相等就行了.(要理解的是,并非重复了就报错,只是存储时候只有一个,输出的时候只会输出一个.) 2.list中的数据对象有顺序并且可以重复 1)Array读快改慢 这是以数组的方式来实现,读的时候根据指针很快就能读取到,但是改的时候要把不同的部分复制出来再创建成一个新的数组,所以比较麻烦. 2)Linked改快读慢 3.循环输出集合内容: 1)iterator方式迭代:创建每个对象自身的迭代器,然后再用迭代器来判断是否有下

Java集合之泛型的使用

泛型提供了一种轻便灵活的数据操作,数据的安全性相对提高. 泛型提供了对列表元素的约束条件,比如ArrayList有序链表,可存储任意类型的元素. 此处构建一个ArrayList对象. ArrayList List = new ArrayList(); 可以通过List.add()方法向List链表中添加任意数据类型的元素,如: List.add(1); List.add(“str”); List.add(true); Iterator it = List.iterator(); while(it

java List.subList方法中的超级大陷阱

ArrayList 中 subList 的基本用法: subList(fromIndex:int,toIndex:int):List<E> 返回从fromIndex到toindex-1 的 子列表 在使用集合中,可能常常需要取集合中的某一部分子集来进行一下操作,于是subList这个方法就映入我们的眼帘,毫不犹豫地使用. 例如以下代码: public static void main(final String[] args) { List<Object> lists = new A

Java泛型和集合之泛型介绍

在声明一个接口和类的时候可以使用尖括号带有一个或者多个参数但是当你在声明属于一个接口或者类的变量的时候或者你在创建一个类实例的时候需要提供他们的具体类型.我们来看下下面这个例子 List<String>words = new ArrayList<String>(); words.add("Hello "); words.add("world!"); String s = words.get(0)+words.get(1); assert s.

浅入深出之Java集合框架(下)

Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. 温馨提醒:建议从(上)开始看哦~ 目 录 浅入深出之Java集合框架(上) 浅入深出之Java集合框架(中)   浅入深出之Java集合框架(下) 前 言 在<浅入深出之Java集合框架(中) >中介绍了Map接口的基本操作.使用的示例是在<浅入深出之Java集合框架(上)>中的模拟学