




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java笔记 authorSZJ类集(Collections)Collection:2Set接口:3LinkedHashSet:4TreeSet:5List:5Map:7HashMap:7map中元素的遍历:8LinkedHashMap:8Properties:8总结:10Collection:/*public interface Collectionextends Iterable * Collection 层次结构中的根接口。Collection 表示一组对象, * 这些对象也称为 collection 的元素。一些 collection 允许有重复的元素, * 而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。 * JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如 Set 和 List)实现。 * 此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。Collections(I)List(I)Set(I)HashSet(C)LinkedHashSet(C)TreeSet(C)SortedSet(I)ArrayList(C)LinkedList(C)Collection:是类集结构中的根接口. Set: 继承了Collection,表示集合,其中的元素是无序的,且最多允许有一个null值. HashSet:Set的实现类,不能保证Set的迭代顺序.允许使用null值 LinkedHashSet:HasheSet的子类.具有可预知迭代顺序的Set接口的实现类 SortedSet:Collection的子接口.提供元素总体排序的Set.这些元素使用自然排序,默认为升序排列.(需要实现Comparable接口)= = TreeSet:SortedSet的实现类,其内部元素按自然顺序升序排列(默认). List: 有序的Collection子接口序列,可以有重复的元素,也可以包括多个null值.ArrayList:List接口的大小可变的数组实现类. LinkedList:List接口链表的实现类, 允许将链接列表用作堆栈、队列或双端队列。容器:用来存放对象,类同对象数组,但优于对象数组,因为其大小随着容器中元素的多少而变化,我们不需要考虑是否能装的下.可以直接对其进行操作.Set接口:/*public interface Set extends Collectoin * Set 中不能包含重复元素,且最多包含一个null值. * java.lang.Object * java.util.AbstractCollection *java.util.AbstractSet * java.util.HashSet * HashSet类是Set接口的实现类. * 其不保证添加元素的顺序.public static void hashSetTest1()Set set1 = new HashSet();set1.add(A);set1.add(B);set1.add(C);set1.add(D);Set(i)继承了Collection(I)数据结构为集合.其实现类为HashSet其中元素是无序的,不会有重复元素,最多有一个null值.System.out.println(set1.toString();/D, A, B, C/set中元素的添加,并不保证其元素的顺序性./构造方法.Set set2 = new HashSet(set1);/生成一个新的set.System.out.println(set2);Set set3 = new HashSet();set3.addAll(set2);System.out.println(set3);set3.clear();/清除set中的所有元素.System.out.println(set3.toString();/contains 当且仅当包含当前对象时返回trueSystem.out.println(set1.contains(B);System.out.println(set2.containsAll(set1);/set的相等性:set的大小相同,且所包含内容相同即可.System.out.println(set1.equals(set2);System.out.println(set2.equals(set3);System.out.println(set1.isEmpty();System.out.println(set3.isEmpty();/容器中元素的遍历.Iterator iterator = set1.iterator();for (; iterator.hasNext();) String name = (String) iterator.next();System.out.println(name);for (String s : set1) System.out.print(s + ,);/容器的大小System.out.println(set1.size();System.out.println(set3.size();/容器和数组Object obj = set1.toArray();System.out.println(Arrays.toString(obj);/*Object obj2 = (String) set1.toArray(); String str = (String)obj2;System.out.println(Arrays.toString(str);*/Set set4 = new HashSet();set4.add(B);set4.add(D);/System.out.println(set4.toString();set1.retainAll(set4);/仅保留指定set4中包含的元素.System.out.println(set1);set1.remove(D);System.out.println(set1);/*java.util.HashSet * java.util.LinkedHashSet * LinkedHashSet是HashSet的一个子类. * 是一个可预知具有迭代顺序的双向列表,其顺序不会受到被插入元素的干扰. */set2.removeAll(set1);System.out.println(set2);LinkedHashSet:public static void linkedHashSet2()Set set1 = new LinkedHashSet();set1.add(D);set1.add(C);set1.add(B);set1.add(A);set1.add(D);set1.add(E);System.out.println(set1.toString();/*java.lang.Object java.util.AbstractCollection ava.util.AbstractSet java.util.TreeSet * treeSet使用自然顺序对元素进行排序.*/TreeSet:public static void treeSet3()Set set1 = new TreeSet();set1.add(D);set1.add(B);set1.add(A);set1.add(C);System.out.println(set1);Books book1 = new Books(1, java, 22.5); Books book2 = new Books(9, html, 52.5); Books book3 = new Books(4, css, 35.5); Books book4 = new Books(3, ajax, 12.5); Set set2 = new TreeSet();set2.add(book1);set2.add(book2);set2.add(book3);set2.add(book4);System.out.println(set2);/*public Interface List extends public Interface Collection * List中的元素的有序的,且其中元素可以是重复的,且允许有多个null值. * ArrayList.List接口的大小可变数组实现. * */List:public static void test1()List list = new ArrayList();list.add(A);list.add(B);list.add(C);list.add(D);list.add(0, E);System.out.println(list);List list2 = new ArrayList();list2.addAll(list);list2.add(0, F);System.out.println(list2);注意,此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问: List list = Collections.synchronizedList(new ArrayList(.); list2.set(0, -);list2.set(list2.size() - 1, -);System.out.println(list2);System.out.println(list2.get(2);System.out.println(list2.size();List list3 = list2.subList(1, list.size() - 1);System.out.println(list2);System.out.println(list3);/*-, E, A, B, C, - E, A, B */list3.remove(1);/对list3 的操作会影响到list2System.out.println(list2);System.out.println(list3);/-, E, B, C, -/E, Blist3.add(1, );System.out.println(list2);System.out.println(list3);/-, E, , B, C, -/E, , BE, A, B, C, DF, E, A, B, C, D-, E, A, B, C, -A6-, E, A, B, C, -E, A, B-, E, B, C, -E, B-, E, , B, C, -E, , BE, , B, BEIterator iter = list3.iterator();while(iter.hasNext()System.out.print(iter.next() + , );System.out.println();ListIterator iter2 = list3.listIterator();在用ListIterator向前迭代前必须先将光标移到最后.while(iter2.hasNext()iter2.next();while(iter2.hasPrevious()System.out.print(iter2.previous();Map:MapIdentityHashMapLinkedHashMapSortedMapTreeMapHashMapWeakHashMapHashMap:public interface Map 它是独立于Collection的一个类集, * 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 * (也就是说在Map中不能包含重复键的元素,且每一个键不能映射多个值. * 当然可以是不同键,相同的值.呵呵废话.) * Map的实现类是HashMap,可以快速查找一个键,1Map元素中key-value映射顺序不能保障.2在HashMap中如果添加的元素key值相同,则会覆盖原来的元素.3不能直接通过iterator迭代.必须转换为Set和Collection4可以存在null的key和valuepublic static void test1()Map map1 = new HashMap();map1.put(10, jamenke);map1.put(20, cooper);map1.put(30, james);20=cooper, 10=jamen, 30=jamesmap1.put(10, jamen);System.out.println(map1);map中元素的遍历:public static void test1() Map map1 = new HashMap();map1.put(10, jamenke);map1.put(20, cooper);map1.put(30, james);map1.put(10, jamen);201030cooperjamenjames20 = cooper10 = jamen30 = jamesSet set1 = map1.keySet();for (Integer i : set1) System.out.println(i);Collection values = map1.values();for (String str : values) System.out.println(str);SetMap.Entry set2 = map1.entrySet();for (Map.Entry entry : set2) System.out.println(entry.getKey() + = + entry.getValue();LinkedHashMap:具有可以预知的迭代顺序,SortedMap:Map的排序子接口. TreeMap:SortedMap的实现类.默认按照自然顺序的升序进行排列,如果是自定义类和对象,需要实现Comparable接口的ComparTo方法.IdentityHashMap:可以具有重复key的元素.WeakHashMap: 以弱键 实现的基于哈希表的 Map。如果其不再使用,则由gc回收.Properties:public static void main(String args) InputStream inStream = PropertiesDemo.class.getResourceAsStream(/perties); Properties prop = new Properties(); try prop.load(inStream);Set keys = prop.keySet();for (Object object : keys) System.out.println(object);System.out.println(-);for(Object object : prop.values()System.out.println(object); catch (IOException e) e.printStackTrace();System.out.println(prop.getProperty(user1);System.out.println(prop.getProperty(user3, 没有对应的用户!);prop.setProperty(user4, tom);Enumeration keys = pertyNames();while (keys.hasMoreElements() String elem = (String) keys.nextElement(); System.out.println(elem);总结:2List:基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。 这个也是Vector和arrayList的唯一的区别。ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论