Java基础集合.docx
- 文档编号:29189188
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:16
- 大小:19.40KB
Java基础集合.docx
《Java基础集合.docx》由会员分享,可在线阅读,更多相关《Java基础集合.docx(16页珍藏版)》请在冰豆网上搜索。
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{
privateCollection
privateSet
publicvoiddoCollection(){
//LinkedHashSetSet的实现类提供有序的链表
months=newLinkedHashSet
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月"));//是否包含指定元素
//使用迭代器遍历
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(Iterator
System.out.println(it.next());
}
}
//TreeSet按自然排序
publicvoiddoTreeSet(){
TreeSet
strs.add("小二");
strs.add("老二");
strs.add("小三");
strs.add("老三");
for(Iterator
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{
privateList
publicTestList(){
aList=newArrayList
aList.add("First");
aList.add("Second");
aList.add("Thrid");
aList.add("Four");
aList.add(2,"插入的元素");//在第二个位置上添加
}
privatevoidgetList(){
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(){ List 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对象 List 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; privateStack 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; privateHashMap 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 Collection for(Bookb: values){ System.out.println(b.getBookId()+"---"+b.getBookName()); } } //TreeMap有序非同步 publicvoiddoTreeMap(){ TreeMap 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(Iterator 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{ privateList 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 编写测试类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础 集合