java集合与泛型

编辑: 来源: 时间: 2017-10-12 16:15 阅读:

  光环大数据项目实战,是让学员按照正式员工的要求,以实际任务为目标,全流程进行真实项目实战,真实费用投放,真实效果呈现。光环大数据学员的项目分析:项目小组首先要对实战项目进行剖析分解,包括:此次项目实现目的(项目实现目的、项目属性、项目功能、项目的价值、项目服务),项目分析(项目产品特性、项目功能特性、项目分组、项目组件)。项目业务流程(分析项目整个流程,尤其是分析实战流程各个环节目标、内容和策略。),项目指标分析。

Java作为大数据培训课程的技术基础,也是其中重要的课程之一,我们先来了解下。

集合:就像是一种容器。用于存储、获取、操作对象的容器。

1.数组的弊端

①数组的长度不可变②数组没有提供可以查看有效元素个数的方法

2.集合的特点

①集合的长度是可变的

②集合可以存储任意类型的对象

③集合只能存储对象

3.集合框架

java.util.Collection:集合层次的根接口

|---java.util.List:有序的,可以重复的。

|---ArrayList:采用数组结构存储元素。查询操作多时选择

|---LinkedList:采用链表结构存储元素。增删操作多时选择

|---Vector:

|---java.util.Set:无序的,不允许重复。

|---HashSet:是Set接口的典型实现类。

判断元素是否存在的依据是:先比较hashCode值,若hashCode存在,再通过equals()比较内容

若hashCode值不存在,则直接存储

注意:重写hashCode和equals二者需要保持一致!

|---LinkedHashSet:相较于HashSet多了链表维护元素的顺序。遍历效率高于HashSet,增删效率低于HashSet

|---TreeSet:拥有自己排序方式

|--自然排序(Comparable):

①需要添加TreeSet集合中对象的类实现Comparable接口

②实现compareTo(Objecto)方法

|--定制排序(Comparator)

①创建一个类实现Comparator接口

②实现compare(Objecto1,Objecto2)方法

③将该实现类的实例作为参数传递给TreeSet的构造器

4.集合的遍历

①增强for循环

for(被遍历集合中元素的数据类型变量名:被遍历的集合){

}

ArrayListal=newArrayList();

al.add("AA");

al.add("BB");

for(Objectobj:al){

System.out.println(obj);

}

②使用Iterator迭代器

//1)获取当前集合的迭代器

Iteratorit=al.iterator();

while(it.hasNext()){

Objectobj=it.next();

System.out.println(obj);

}

/*错误的做法:通常一个hasNext()配合一个next()使用

Iteratorit=al.iterator();

while(it.hasNext()){

Objectobj=it.next();

System.out.println(it.next());

}*/

③ListIterator:列表迭代器,是List特有的迭代器(了解)

ListIteratorli=al.listIterator();

while(li.hasNext()){

Objectobj=li.next();

if(obj.equals("BB")){

li.set("BBBBBBBBBBb");

}

}

二、Map系列集合

java.util.Map:用于存储成对对象的集合。具有key(键)-value(值)对映射关系的集合。一个key对应着一个value。key不允许重复的。

|---HashMap:是Map接口的典型实现类。

|---LinkedHashMap:相较于HashMap多了链表维护元素的顺序

|---Hashtable:是线程安全的,因此效率低

|---Properties:用于操作属性文件

|---TreeMap:根据key拥有自己的排序方式

|--自然排序(Comparable):

|--定制排序(Comparator):

//使用Properties操作属性文件

@Test

publicvoidtest1()throwsFileNotFoundException,IOException{

//1.创建Properties对象

Propertiesprops=newProperties();

//2.通过load()方法加载属性文件

props.load(newFileInputStream("hello.properties"));

//3.通过getProperty()方法根据key获取对应的value

StringuserName=props.getProperty("username");

Stringpassword=props.getProperty("password");

System.out.println(userName);

System.out.println(password);

}

1.Map的常用方法:

添加、删除操作:

Objectput(Objectkey,Objectvalue)

Objectremove(Objectkey)

voidputAll(Mapt)

voidclear()

元素查询的操作:

Objectget(Objectkey)

booleancontainsKey(Objectkey)

booleancontainsValue(Objectvalue)

intsize()

booleanisEmpty()

booleanequals(Objectobj)

2.Map的遍历:

Mapmap=newHashMap();

map.put("AA",123);

map.put("BB",456);

keySet();

//遍历Map的方式一:获取Map中所有的key

Setset=map.keySet();

values();

//遍历Map的方式二:获取Map中所有的value

Collectioncoll=map.values();

//遍历Map的方式三:获取Map中所有的Entry(是Map的一个内部类,一个Entry对应着Map中的一个key和一个value)

SetentrySet=map.entrySet();

for(Objectobj:entrySet){

Entryentry=(Entry)obj;

Objectkey=entry.getKey();

Objectvalue=entry.getValue();

}

Iteratorit=entrySet.iterator();

while(it.hasNext()){

Entryentry=(Entry)it.next();

Objectkey=entry.getKey();

Objectvalue=entry.getValue();

}

三、

为什么使用泛型:若集合中不使用泛型,意味着集合中可以添加任意类型的对象。若需要具体到某一个类型时,需要强制类型转换

可能引发ClassCastException

泛型:在Java中以"<>"的形式呈现,<>中写引用数据类型

用于限制集合中存放元素的类型

1.在集合中应用泛型

2.自定义泛型类、接口、方法

classDAO<T>{//T:TypeE:ElementK:KeyV:Value

privateList<T>list=newArrayList<T>();

publicvoidadd(Tt){

list.add(t);

}

publicTget(intid){

returnlist.get(id);

}

//自定义泛型方法

public<E>E[]srot(E[]e){

}

}

3.通配符?

虽然Person是Student的父类,但是List<Person>就不是List<Student>的父类

//需求:

//publicvoidshow(List<Student>list){}

//publicvoidshow1(List<Man>list){}

publicvoidshow(List<?extendsPerson>list){}

List<?>:可以接收任意带泛型类型的集合

List<?extendsPerson>:可以接收Person本类类型及Person子类类型带泛型类型的集合

List<?superPerson>:可以接收Person本类类型及Person父类类型带泛型类型的集合

大数据培训,就选光环大数据!

原创文章,转载请注明出处:光环大数据http://hadoop.aura.cn


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();