Java基础集合.docx

上传人:b****5 文档编号:29189188 上传时间:2023-07-21 格式:DOCX 页数:16 大小:19.40KB
下载 相关 举报
Java基础集合.docx_第1页
第1页 / 共16页
Java基础集合.docx_第2页
第2页 / 共16页
Java基础集合.docx_第3页
第3页 / 共16页
Java基础集合.docx_第4页
第4页 / 共16页
Java基础集合.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Java基础集合.docx

《Java基础集合.docx》由会员分享,可在线阅读,更多相关《Java基础集合.docx(16页珍藏版)》请在冰豆网上搜索。

Java基础集合.docx

Java基础集合

集合

集合保存对象的引用,不产生新的对象(存放对象的容器)

collection接口

|

---------------------------------------------

||

Set接口(不重复)List接口(可以重复)

||

----------------------------------------------------------

|||||

HashSet(无序)TreeSet(有序)ArrayListVectorLinkedList

||

LinkedHashSet(有序)Stack

 

Collection接口集合框架的根

常用方法

booleancontains(Objecta)

Iteratoriterator()

intsize()

voidclear()

booleanadd(Objecta)

booleanisEmpty()

Iterator接口集合进行迭代的迭代器

主要方法:

hasNext()

next()

Set接口

不允许重复元素,可以最多包含一个null值重复替换旧的

TreeSet存放对象时可以重复

publicclassTestSet{

privateCollectionmonths;

privateSetbooks;

publicvoiddoCollection(){

//LinkedHashSetSet的实现类提供有序的链表

months=newLinkedHashSet();//创建Collection接口的引用指向实现类的实例

System.out.println("未添加数据前,集合是否为空:

"+months.isEmpty());

for(inti=1;i<13;i++){

months.add("第"+i+"月");

}

System.out.println("添加数据后,集合是否为空:

"+months.isEmpty());

System.out.println("集合中元素个数:

"+months.size());

System.out.println("是否包含第5月:

"+months.contains("第5月"));//是否包含指定元素

//使用迭代器遍历

Iteratorit=months.iterator();

while(it.hasNext()){

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

}

months.clear();//清空集合中的元素

System.out.println("清空数据后集合中元素个数:

"+months.size());

System.out.println("清空数据后集合是否为空:

"+months.isEmpty());

}

//HashSet无序

publicvoiddoHashSet(){

books=newHashSet();

Bookb1=newBook(100,"后街传说","px",500.0F);

Bookb2=newBook(101,"电大风云","px",100.0F);

Bookb3=newBook(102,"神雕侠侣","金庸",100.0F);

books.add(b1);

books.add(b2);

books.add(b3);

books.add(b3);//重复新的替换旧的

//遍历

for(Iteratorit=books.iterator();it.hasNext();){

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

}

}

//TreeSet按自然排序

publicvoiddoTreeSet(){

TreeSetstrs=newTreeSet();

strs.add("小二");

strs.add("老二");

strs.add("小三");

strs.add("老三");

for(Iteratorit=strs.iterator();it.hasNext();){

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

}

}

publicstaticvoidmain(String[]args){

TestSettest=newTestSet();

test.doCollection();

test.doHashSet();

test.doTreeSet();

}

}

 

List接口可以存放重复元素

元素可以通过其整型下标访问get(i)

ArrayList类实现可变长度的对象数组动态创建数组

线程不安全非同步效益高于Vector

Vector类

实现可变长度的对象数组

线程安全同步

当需要增长时,Vector默认增长为原来一培,

而ArrayList却是原来的一半

Stack类

表示后进先出的对象堆栈

继承Vector

Push()

Pop();

Peek()

 

publicclassTestList{

privateListaList;

publicTestList(){

aList=newArrayList();

aList.add("First");

aList.add("Second");

aList.add("Thrid");

aList.add("Four");

aList.add(2,"插入的元素");//在第二个位置上添加

}

privatevoidgetList(){

Iteratorit=aList.iterator();

while(it.hasNext()){

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

}

aList.remove

(1);//移除指定位置的元素

System.out.println("===============");

for(inti=0;i

System.out.println(aList.get(i));

}

}

//LinkedList

//以链表形式存放数据链表插入、删除速度快

privatevoiddoLinkedList(){

ListlinkedList=newLinkedList();

linkedList.add("one");

linkedList.add("two");

linkedList.add("three");

linkedList.add("four");

linkedList.set(2,"two-2");//插入

for(inti=0;i

System.out.println(linkedList.get(i));

}

}

publicvoiddoSynDemo(){

//返回线程安全的List对象

Listlist=Collections.synchronizedList(newArrayList());

list.add("aaa");

list.add("bbb");

for(Strings:

list){

System.out.println(s);

}

}

publicstaticvoidmain(String[]args){

TestListtest=newTestList();

test.getList();

System.out.println("**************");

test.doLinkedList();

System.out.println("**************");

test.doSynDemo();

}

}

Stack类

以堆栈的形式存放数据:

后进先出

主要操作:

Push()入栈

Pop()出栈

Peek()查看栈顶元素

publicclassTestStack{

privateintsize=5;

privateStackstack;

publicTestStack(){

stack=newStack();

}

//入栈

privatevoidinStack(){

for(inti=1;i<=size+1;i++){

stack.push("第"+i+"颗子弹");

if(i==size+1){

System.out.println("最后入栈的是"+"第"+i+"颗子弹");

}else{

System.out.println("装弹:

第"+i+"颗子弹");

}

}

}

//出栈

privatevoidoutStack(){

System.out.println("元素个数:

"+stack.size());

System.out.println("栈顶元素:

"+stack.peek());//得到最上面的元素.元素还是在stack中间

System.out.println("元素个数:

"+stack.size());

while(!

stack.isEmpty()){

System.out.println("射击:

"+stack.pop());//出栈得到最上面的元素.元素从stack删除

}

System.out.println("stack是否为空:

"+stack.isEmpty());

}

publicstaticvoidmain(String[]args){

TestStacktest=newTestStack();

test.inStack();

System.out.println("===============");

test.outStack();

}

}

 

Map接口(键值对)

|

------------------------------------

|||

|||

HashMapTreeMapHashtable

 

Map接口以键值对的形式存放数据

键不能重复后者覆盖前者

基本操作

put(key,value)、

get(key)、

remove(key)、

containsKey()、

containsValue()、

size()

isEmpty()

HashMap无序

允许一个null键和多个null值。

线程不安全非同步速度快

Hashtable无序

不允许null键和null值

线程安全同步

TreeMap有序非同步

publicclassTestMap{

privateMapht;

privateHashMaphm;

publicTestMap(){

ht=newHashtable();

ht.put("a",10);

ht.put("b","asdf");

ht.put("c",10.55);

ht.put("d",30);

ht.put("f","asdf");

ht.put(11,40.55);

hm=newHashMap();

hm.put(1,newBook(100,"后街传说","px",500.0F));

hm.put(8,newBook(101,"电大风云","px",100.0F));

hm.put(6,newBook(102,"神雕侠侣","金庸",100.0F));

}

privatevoiddoHashtable(){

ht.put("a",20);//添加新值覆盖旧值

ht.remove("b");//指定键删除元素

Setset=ht.keySet();//获取键的Set集合

Iteratorit=set.iterator();

while(it.hasNext()){

Objectobj=it.next();

System.out.println(obj+""+ht.get(obj));//get(key)返回指定键所映射的值

}

System.out.println("========================");

System.out.printf("%s是否包含在map键中:

%b%n","a",ht.containsKey("a"));

}

 

//HashMap无序

publicvoiddoHashMap(){

System.out.println("是否包含键1:

"+hm.containsKey

(1));

//获取所包含的值的Collection

Collectionvalues=hm.values();

for(Bookb:

values){

System.out.println(b.getBookId()+"---"+b.getBookName());

}

}

//TreeMap有序非同步

publicvoiddoTreeMap(){

TreeMaptreeMap=newTreeMap();

treeMap.put("a-100",newBook(100,"后街传说","px",500.0F));

treeMap.put("b-101",newBook(101,"电大风云","px",100.0F));

treeMap.put("a-102",newBook(102,"神雕侠侣","金庸",100.0F));

for(Iteratorit=treeMap.keySet().iterator();it.hasNext();){

Stringstr=it.next();

System.out.println("键:

"+str+"值:

"+treeMap.get(str));

}

}

publicstaticvoidmain(String[]args){

TestMaptest=newTestMap();

test.doHashtable();

System.out.println("=================");

test.doHashMap();

System.out.println("=================");

test.doTreeMap();

}

}

Collections类

包含一些对集合对象操作的静态方法

 

publicclassTestCollections{

privateListbooks=newArrayList();

publicTestCollections(){

books.add(newBook(102,"神雕侠侣","金庸",100.0F));

books.add(newBook(109,"射雕英雄传","金庸",100.0F));

books.add(newBook(104,"笑傲江湖","金庸",100.0F));

books.add(newBook(107,"倚天屠龙","金庸",100.0F));

books.add(newBook(102,"后街传说","金庸",100.0F));

books.add(newBook(100,"常德风云","金庸",100.0F));

}

publicvoidsortBooks(){

System.out.println("排序前:

");

for(Bookb:

books){

System.out.println(b);

}

//使用Collections排序

Collections.sort(books,newBookComparator());

System.out.println("排序后:

");

for(Bookb:

books){

System.out.println(b);

}

}

publicstaticvoidmain(String[]args){

newTestCollections().sortBooks();

}

}

publicclassBookimplementsComparable{

privateintbookId;

privateStringbookName;

privateStringauthor;

privatefloatprice;

publicBook(){

super();

}

publicBook(intbookId,StringbookName,Stringauthor,floatprice){

super();

this.bookId=bookId;

this.bookName=bookName;

this.author=author;

this.price=price;

}

publicStringtoString(){

return"Book[author="+author+",bookId="+bookId+",bookName="

+bookName+",price="+price+"]";

}

publicIntegergetBookId(){

returnbookId;

}

publicStringgetBookName(){

returnbookName;

}

/*

*用于TreeSet排序

*/

@Override

publicintcompareTo(Booko){

returno.getBookId();

}

}

//book比较器要给集合中的book对象排序需要告诉集合中book对象的比较规则

//Comparator接口作用为对象指定比较规则

//排序由compare()返回值确定0负整数正整数

classBookComparatorimplementsComparator{

publicintcompare(Booko1,Booko2){

//returno2.getBookId()-o1.getBookId();

returno1.getBookId().compareTo(o2.getBookId());

//使用Integer的compareTo()比较两个数

}

}

classBookNameComparatorimplementsComparator{

//Collator用于对国际化处理的字符串比较抽象类通过getInstance工厂方法获取实例

//CollationKey针对Collator操作的类

Collatorcollator=Collator.getInstance();

publicintcompare(Booko1,Booko2){

CollationKeykey1=collator.getCollationKey(o1.getBookName());

CollationKeykey2=collator.getCollationKey(o2.getBookName());

returnpareTo(key2);

}

}

作业:

1.。

设计类Employee类、Department类,

要求Employee类提供获取时可以获取其所在部门功能,

department类提供时可以获取这个部门所有员工信息功能,输出所有员工时要求按编号排序

编写测试类

2.设计类Province(省份)类,City类

要求Province类提供获取所有城市功能、根据城市编号获取其对应城市信息功能

City类提供获取所在省份的功能提示使用Map

编写测试类

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1