java集合框架基础入门.docx
《java集合框架基础入门.docx》由会员分享,可在线阅读,更多相关《java集合框架基础入门.docx(20页珍藏版)》请在冰豆网上搜索。
![java集合框架基础入门.docx](https://file1.bdocx.com/fileroot1/2023-1/28/4c48f98e-c598-4cfe-9c03-d28fe0a7a671/4c48f98e-c598-4cfe-9c03-d28fe0a7a6711.gif)
java集合框架基础入门
Collection集合框架:
存数不同数据类型的容器
三大接口:
全部是泛型接口
1)Collection是集合的跟接口
2)Map接口,存放是键值对
3)Iterator是专门迭代结合的接口
List:
是一个有序的泛型接口(可以重复的)(有序可以重复的)
List的实现类:
1)ArrayList底层是一个数组
2)LinkedList底层是一个链表结构
面试题:
Collection和Collections的区别是什么:
Collection是所有的集合的根接口
Collections是用来操作集合的类其中包含了很多方法来操作集合(Array和Arrays)
ArrayList和LinkedList,Vector的区别:
ArrayList底层是数组查询效率较高,做插入时效率较低(线程不安全的,但是效率高)
LinkedList底层是链表,做查询的时候效率低,插入时效率高
Vector是同步的线程安全的,效率低
Set接口中的实现类
1)hashSet:
是无序的不可重复的
2)TreeSet:
可以实现排序(当存储的是对象时,必须实现Comparable接口重写CompareTo()进行自定义排序)
Iterator迭代器(专门迭代集合的神器)
1数组集ArrayList.java
ArrayListDemo1.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.ArrayList;
importjava.util.List;
publicclassArrayListDemo1{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
list.add("hello");
list.add("world");
list.add
(1);
list.add('男');
System.out.println(list);
}
}
ArrayListDemo2.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.List;
publicclassArrayListDemo2{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
list.add("hello");
list.add("world");
//list.add
(1);错误的
Collections.addAll(list,"您好","世界");
System.out.println(list);
}
}
ArryaListDemo3.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.List;
publicclassArrayListDemo3{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
list.add("A");
list.add("A");
list.add("C");
list.add("B");
System.out.println(list);
}
}
ArryaListDemo4.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.ArrayList;
importjava.util.Collection;
importjava.util.List;
publicclassArrayListDemo4{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
Collectioncollection=newArrayList();
collection.add("world");
collection.add("世界");
list.add("A");
list.add("A");
list.add("C");
list.add("B");
list.add(0,"hello");//在制定的位置去添加集合元素
list.addAll(collection);
list.addAll(0,collection);
list.set(0,"你好");//根据下标更改对应的集合元素
list.remove(0);//根据下标删除集合元素
list.remove("hello");//根据元素的内容去删除集合元素
list.removeAll(collection);
System.out.println(list);
System.out.println(list.size());
}
}
ArryaListDemo5.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.ArrayList;
importjava.util.Collection;
importjava.util.List;
publicclassArrayListDemo5{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
list.add("A");
list.add("A");
list.add("C");
list.add("B");
String[]str=list.toArray(newString[list.size()]);
for(Stringstr1:
str){
System.out.println(str1);
}
System.out.println("=============================================");
Object[]strr=list.toArray();
for(inti=0;iSystem.out.println(strr[i]);
}
}
}
ArryaListDemo6.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.ArrayList;
importjava.util.Collection;
importjava.util.List;
publicclassArrayListDemo6{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
list.add("hello");
list.add("A");
System.out.println(list.indexOf("B"));
System.out.println(list.isEmpty());
}
}
ArryaListDemo7.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.LinkedList;
importjava.util.List;
publicclassArrayListDemo7{
publicstaticvoidmain(String[]args){
Listlist=newLinkedList();
list.add("hello");
list.add("A");
/*System.out.println(list.indexOf("B"));
System.out.println(list.isEmpty());*/
for(inti=0;iSystem.out.println(list.get(i));
}
System.out.println("===================");
for(Stringstr:
list){
System.out.println(str);
}
}
}
2set接口实现类
Person.java
packagecom.chinasofti.eec.vo;
publicclassPersonimplementsComparable{
privateStringname;
privateintage;
publicPerson(Stringname,intage){
super();
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
@Override
publicStringtoString(){
return"Person[name="+name+",age="+age+"]";
}
@Override
publicinthashCode(){
finalintprime=31;
intresult=1;
result=prime*result+age;
result=prime*result+((name==null)?
0:
name.hashCode());
returnresult;
}
@Override
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!
=obj.getClass())
returnfalse;
Personother=(Person)obj;
if(age!
=other.age)
returnfalse;
if(name==null){
if(other.name!
=null)
returnfalse;
}elseif(!
name.equals(other.name))
returnfalse;
returntrue;
}
@Override
publicintcompareTo(Personp){
if(this.age>p.age){
return1;
}elseif(this.age
return-1;
}else{
returnpareTo(p.name);
}
};
}
SetDemo1.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.HashSet;
importjava.util.Set;
importcom.chinasofti.eec.vo.Person;
publicclassSetDemo1{
publicstaticvoidmain(String[]args){
Setset=newHashSet();
set.add(newPerson("张三",18));
set.add(newPerson("王五",18));
set.add(newPerson("李四",17));
set.add(newPerson("陈六",16));
set.add(newPerson("王五",15));
System.out.println(set);
}
}
SetDemo2.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.Iterator;
importjava.util.Set;
importjava.util.TreeSet;
importcom.chinasofti.eec.vo.Person;
publicclassSetDemo2{
publicstaticvoidmain(String[]args){
Setset=newTreeSet();
set.add(newPerson("张三",15));
set.add(newPerson("王五",18));
set.add(newPerson("李四",17));
set.add(newPerson("陈六",16));
set.add(newPerson("王五",18));
Iteratorit=set.iterator();
while(it.hasNext()){
Personperson=it.next();
System.out.println(person);
}
}
}
SetDemo3.java
packagecom.chinasofti.eec.collectionDemo;
importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.Set;
importjava.util.TreeSet;
importcom.chinasofti.eec.vo.Person;
publicclassSetDemo3{
publicstaticvoidmain(String[]args){
Setset=newHashSet();
set.add("hello");
set.add("world");
set.add("java");
set.add("c++");
set.add("dsadasd");
Iteratorit=set.iterator();
while(it.hasNext()){
Stringperson=it.next();
System.out.println(person);
}
}
}
1ArrayList存储字符串并遍历
packagecn.itcast_01;
importjava.util.ArrayList;
importjava.util.Iterator;
/*
*ArrayList存储字符串并遍历。
要求加入泛型,并用增强for遍历。
*A:
迭代器
*B:
普通for
*C:
增强for
*/
publicclassArrayListDemo{
publicstaticvoidmain(String[]args){
//创建集合对象
ArrayListarray=newArrayList();
//创建并添加元素
array.add("hello");
array.add("world");
array.add("java");
//遍历集合
//迭代器
Iteratorit=array.iterator();
while(it.hasNext()){
Strings=it.next();
System.out.println(s);
}
System.out.println("------------------");
//普通for
for(intx=0;xStrings=array.get(x);
System.out.println(s);
}
System.out.println("------------------");
//增强for
for(Strings:
array){
System.out.println(s);
}
}
}
2迭代器
packagecn.itcast_01;
importjava.util.ArrayList;
importjava.util.Iterator;
/*
*需求:
ArrayList存储自定义对象并遍历。
要求加入泛型,并用增强for遍历。
*A:
迭代器
*B:
普通for
*C:
增强for
*
*LinkedList,Vector,Colleciton,List等存储我还讲吗?
不讲解了,但是要求你们练习。
*
*增强for是用来替迭代器。
*/
publicclassArrayListDemo2{
publicstaticvoidmain(String[]args){
//创建集合对象
ArrayListarray=newArrayList();
//创建学生对象
Students1=newStudent("林青霞",27);
Students2=newStudent("貂蝉",22);
Students3=newStudent("杨玉环",24);
Students4=newStudent("西施",21);
Students5=newStudent("王昭君",23);
//把学生对象添加到集合中
array.add(s1);
array.add(s2);
array.add(s3);
array.add(s4);
array.add(s5);
//迭代器
Iteratorit=array.iterator();
while(it.hasNext()){
Students=it.next();
System.out.println(s.getName()+"---"+s.getAge());
}
System.out.println("---------------");
//普通for
for(intx=0;xStudents=array.get(x);
System.out.println(s.getName()+"---"+s.getAge());
}
System.out.println("---------------");
//增强for
for(Students:
array){
System.out.println(s.getName()+"---"+s.getAge());
}
}
}
3增强for循环
packagecn.itcast_01;
importjava.util.ArrayList;
importjava.util.List;
/*
*JDK5的新特性:
自动拆装箱,泛型,增强for,静态导入,可变参数,枚举
*
*增强for:
是for循环的一种。
*
*格式:
*for(元素数据类型变量:
数组或者Collection集合){
*使用变量即可,该变量就是元素
*}
*
*好处:
简化了数组和集合的遍历。
*
*弊端:
增强for的目标不能为null。
*如何解决呢?
对增强for的目标先进行不为null的判断,然后在使用。
*/
publicclassForDemo{
publicstaticvoidmain(String[]args){
//定义一个int数组
int[]arr={1,2,3,4,5};
for(intx=0;xSystem.out.println(arr[x]);
}
System.out.println("---------------");
//增强for
for(intx:
arr){
System.out.println(x);
}
System.out.println("---------------");
//定义一个字符串数组
String[]strArray={"林青霞","风清扬","东方不败","刘意"};
//增强for
for(Strings: