Java集合框架为Java编程语言的基础,也是Java面试中非常重要的一个知识点。

这里,我列出了一些关于Java集合的重要问题和答案。

1.Java集合框架是什么?说出一些集合框架的长处?

每种编程语言中都有集合。最初的Java版本号包括几种集合类:Vector、Stack、HashTable和Array。

随着集合的广泛使用。Java1.2提出了囊括全部集合接口、实现和算法的集合框架。

在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了非常久。它还包括在Java并发包中,堵塞接口以及它们的实现。

集合框架的部分长处例如以下:

(1)使用核心集合类减少开发成本,而非实现我们自己的集合类。

(2)随着使用经过严格測试的集合框架类。代码质量会得到提高。

(3)通过使用JDK附带的集合类,能够减少代码维护成本。

(4)复用性和可操作性。

2.集合框架中的泛型有什么长处?

Java1.5引入了泛型。全部的集合接口和实现都大量地使用它。泛型同意我们为集合提供一个能够容纳的对象类型,因此。假设你加入其他类型的不论什么元素,它会在编译时报错。这避免了在执行时出现ClassCastException。由于你将会在编译时得到报错信息。

泛型也使得代码整洁,我们不须要使用显式转换和instanceOf操作符。

它也给执行时带来长处。由于不会产生类型检查的字节码指令。

3.Java集合框架的基础接口有哪些?

  • Collection为集合层级的根接口。

    一个集合代表一组对象。这些对象即为它的元素。

    Java平台不提供这个接口不论什么直接的实现。

  • Set是一个不能包括反复元素的集合。

    这个接口对数学集合抽象进行建模。被用来代表集合,就如一副牌。

  • List是一个有序集合。能够包括反复元素。

    你能够通过它的索引来訪问不论什么元素。List更像长度动态变换的数组。

  • Map是一个将key映射到value的对象.一个Map不能包括反复的key:每一个key最多仅仅能映射一个value。

一些其他的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。

4.为何Collection不从Cloneable和Serializable接口继承?

Collection接口指定一组对象,对象即为它的元素。怎样维护这些元素由Collection的详细实现决定。

比如。一些如List的Collection实现同意反复的元素。而其他的如Set就不同意。非常多Collection实现有一个公有的clone方法。

然而。把它放到集合的全部实现中也是没有意义的。这是由于Collection是一个抽象表现。重要的是实现。

当与详细实现打交道的时候,克隆或序列化的语义和含义才发挥作用。所以,详细实现应该决定怎样对它进行克隆或序列化,或它能否够被克隆或序列化。

在全部的实现中授权克隆和序列化,终于导致更少的灵活性和很多其他的限制。特定的实现应该决定它能否够被克隆和序列化。

5.为何Map接口不继承Collection接口?

虽然Map接口和它的实现也是集合框架的一部分。但Map不是集合。集合也不是Map。

因此,Map继承Collection毫无意义,反之亦然。

假设Map继承Collection接口,那么元素去哪儿?Map包括key-value对,它提供抽取key或value列表集合的方法,可是它不适合“一组对象”规范。

6.Iterator是什么?

Iterator接口提供遍历不论什么Collection的接口。

我们能够从一个Collection中使用迭代器方法来获取迭代器实例。迭代器代替了Java集合框架中的Enumeration。迭代器同意调用者在迭代过程中移除元素。

7.Enumeration和Iterator接口的差别?

Enumeration的速度是Iterator的两倍,也使用更少的内存。

Enumeration是非常基础的,也满足了基础的须要。可是,与Enumeration相比,Iterator更加安全,由于当一个集合正在被遍历的时候。它会阻止其他线程去改动集合。

迭代器代替了Java集合框架中的Enumeration。

迭代器同意调用者从集合中移除元素,而Enumeration不能做到。

为了使它的功能更加清晰,迭代器方法名已经经过改善。

8.为何没有像Iterator.add()这种方法。向集合中加入元素?

语义不明。已知的是,Iterator的协议不能确保迭代的次序。然而要注意。ListIterator没有提供一个add操作,它要确保迭代的顺序。

9.为何迭代器没有一个方法能够直接获取下一个元素。而不须要移动游标?

它能够在当前Iterator的顶层实现。可是它用得非常少,假设将它加到接口中,每一个继承都要去实现它。这没有意义。

10.Iterater和ListIterator之间有什么差别?

(1)我们能够使用Iterator来遍历Set和List集合,而ListIterator仅仅能遍历List。

(2)Iterator仅仅能够向前遍历。而LIstIterator能够双向遍历。

(3)ListIterator从Iterator接口继承,然后加入了一些额外的功能,比方加入一个元素、替换一个元素、获取前面或后面元素的索引位置。

**********

11.遍历一个List有哪些不同的方式?

List<String> strList = new ArrayList<>();

//使用for-each循环

for(String obj : strList){

System.out.println(obj);

}

//using iterator

Iterator<String> it = strList.iterator();

while(it.hasNext()){

String obj = it.next();

System.out.println(obj);

}

使用迭代器更加线程安全。由于它能够确保,在当前遍历的集合元素被更改的时候。它会抛出ConcurrentModificationException。

12.通过迭代器fail-fast属性,你明确了什么?

每次我们尝试获取下一个元素的时候,Iterator fail-fast属性检查当前集合结构里的不论什么改动。假设发现不论什么改动。它抛出ConcurrentModificationException。Collection中全部Iterator的实现都是按fail-fast来设计的(ConcurrentHashMap和CopyOnWriteArrayList这类并发集合类除外)。

13.fail-fast与fail-safe有什么差别?

Iterator的fail-fast属性与当前的集合共同起作用,因此它不会受到集合中不论什么改动的影响。

Java.util包中的全部集合类都被设计为fail-fast的。而java.util.concurrent中的集合类都为fail-safe的。

Fail-fast迭代器抛出ConcurrentModificationException,而fail-safe迭代器从不抛出ConcurrentModificationException。

14.在迭代一个集合的时候,怎样避免ConcurrentModificationException?

在遍历一个集合的时候,我们能够使用并发集合类来避免ConcurrentModificationException,比方使用CopyOnWriteArrayList。而不是ArrayList。

15.为何Iterator接口没有详细的实现?

Iterator接口定义了遍历集合的方法。但它的实现则是集合实现类的责任。每一个能够返回用于遍历的Iterator的集合类都有它自己的Iterator实现内部类。

这就同意集合类去选择迭代器是fail-fast还是fail-safe的。比方,ArrayList迭代器是fail-fast的。而CopyOnWriteArrayList迭代器是fail-safe的。

16.UnsupportedOperationException是什么?

UnsupportedOperationException是用于表明操作不支持的异常。

在JDK类中已被大量运用,在集合框架java.util.Collections.UnmodifiableCollection将会在全部add和remove操作中抛出这个异常。

17.在Java中,HashMap是怎样工作的?

HashMap在Map.Entry静态内部类实现中存储key-value对。

HashMap使用哈希算法。在put和get方法中。它使用hashCode()和equals()方法。当我们通过传递key-value对调用put方法的时候。HashMap使用Key hashCode()和哈希算法来找出存储key-value对的索引。

Entry存储在LinkedList中,所以假设存在entry。它使用equals()方法来检查传递的key是否已经存在。假设存在,它会覆盖value。假设不存在。它会创建一个新的entry然后保存。

当我们通过传递key调用get方法时,它再次使用hashCode()来找到数组中的索引,然后使用equals()方法找出正确的Entry,然后返回它的值。下面的图片解释了详细内容。

其他关于HashMap比較重要的问题是容量、负荷系数和阀值调整。HashMap默认的初始容量是32,负荷系数是0.75。

阀值是为负荷系数乘以容量,不管何时我们尝试加入一个entry,假设map的大小比阀值大的时候,HashMap会对map的内容进行又一次哈希。且使用更大的容量。容量总是2的幂。所以假设你知道你须要存储大量的key-value对,比方缓存从数据库里面拉取的数据,使用正确的容量和负荷系数对HashMap进行初始化是个不错的做法。

18.hashCode()和equals()方法有何重要性?

HashMap使用Key对象的hashCode()和equals()方法去决定key-value对的索引。当我们试着从HashMap中获取值的时候,这些方法也会被用到。

假设这些方法没有被正确地实现,在这种情况下,两个不同Key或许会产生同样的hashCode()和equals()输出,HashMap将会觉得它们是同样的,然后覆盖它们。而非把它们存储到不同的地方。

同样的,全部不同意存储反复数据的集合类都使用hashCode()和equals()去查找反复。所以正确实现它们非常重要。

equals()和hashCode()的实现应该遵循下面规则:

(1)假设o1.equals(o2),那么o1.hashCode() == o2.hashCode()总是为true的。

(2)假设o1.hashCode() == o2.hashCode()。并不意味着o1.equals(o2)会为true。

19.我们能否使用不论什么类作为Map的key?

我们能够使用不论什么类作为Map的key,然而在使用它们之前,须要考虑下面几点:

(1)假设类重写了equals()方法。它也应该重写hashCode()方法。

(2)类的全部实例须要遵循与equals()和hashCode()相关的规则。请參考之前提到的这些规则。

(3)假设一个类没有使用equals(),你不应该在hashCode()中使用它。

(4)用户自己定义key类的最佳实践是使之为不可变的。这样,hashCode()值能够被缓存起来,拥有更好的性能。

不可变的类也能够确保hashCode()和equals()在未来不会改变,这样就会解决与可变相关的问题了。

比方,我有一个类MyKey,在HashMap中使用它。

//传递给MyKey的name參数被用于equals()和hashCode()中

MyKey key = new MyKey('Pankaj'); //assume hashCode=1234

myHashMap.put(key, 'Value');

// 下面的代码会改变key的hashCode()和equals()值

key.setName('Amit'); //assume new hashCode=7890

//下面会返回null,由于HashMap会尝试查找存储同样索引的key。而key已被改变了,匹配失败,返回null

myHashMap.get(new MyKey('Pankaj'));

那就是为何String和Integer被作为HashMap的key大量使用。

20.Map接口提供了哪些不同的集合视图?

Map接口提供三个集合视图:

(1)Set keyset():返回map中包括的全部key的一个Set视图。

集合是受map支持的,map的变化会在集合中反映出来,反之亦然。当一个迭代器正在遍历一个集合时。若map被改动了(除迭代器自身的移除操作以外),迭代器的结果会变为没有定义。

集合支持通过Iterator的Remove、Set.remove、removeAll、retainAll和clear操作进行元素移除。从map中移除相应的映射。它不支持add和addAll操作。

(2)Collection values():返回一个map中包括的全部value的一个Collection视图。

这个collection受map支持的。map的变化会在collection中反映出来,反之亦然。当一个迭代器正在遍历一个collection时,若map被改动了(除迭代器自身的移除操作以外),迭代器的结果会变为没有定义。

集合支持通过Iterator的Remove、Set.remove、removeAll、retainAll和clear操作进行元素移除,从map中移除相应的映射。它不支持add和addAll操作。

(3)Set<Map.Entry<K,V>> entrySet():返回一个map钟包括的全部映射的一个集合视图。

这个集合受map支持的,map的变化会在collection中反映出来。反之亦然。当一个迭代器正在遍历一个集合时,若map被改动了(除迭代器自身的移除操作,以及对迭代器返回的entry进行setValue外),迭代器的结果会变为没有定义。

集合支持通过Iterator的Remove、Set.remove、removeAll、retainAll和clear操作进行元素移除,从map中移除相应的映射。它不支持add和addAll操作。

**********

21.HashMap和HashTable有何不同?

(1)HashMap同意key和value为null。而HashTable不同意。

(2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。

(3)在Java1.4中引入了LinkedHashMap,HashMap的一个子类,假如你想要遍历顺序,你非常easy从HashMap转向LinkedHashMap,可是HashTable不是这种。它的顺序是不可预知的。

(4)HashMap提供对key的Set进行遍历。因此它是fail-fast的。但HashTable提供对key的Enumeration进行遍历,它不支持fail-fast。

(5)HashTable被觉得是个遗留的类。假设你寻求在迭代的时候改动Map,你应该使用CocurrentHashMap。

22.怎样决定选用HashMap还是TreeMap?

对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而。假如你须要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,或许向HashMap中加入元素会更快。将map换为TreeMap进行有序key的遍历。

23.ArrayList和Vector有何异同点?

ArrayList和Vector在非常多时候都非常类似。

(1)两者都是基于索引的,内部由一个数组支持。

(2)两者维护插入的顺序,我们能够依据插入顺序来获取元素。

(3)ArrayList和Vector的迭代器实现都是fail-fast的。

(4)ArrayList和Vector两者同意null值。也能够使用索引值对元素进行随机訪问。

下面是ArrayList和Vector的不同点。

(1)Vector是同步的,而ArrayList不是。

然而。假设你寻求在迭代的时候对列表进行改变。你应该使用CopyOnWriteArrayList。

(2)ArrayList比Vector快。它由于有同步。不会过载。

(3)ArrayList更加通用,由于我们能够使用Collections工具类轻易地获取同步列表和仅仅读列表。

24.Array和ArrayList有何差别?什么时候更适合用Array?

  • Array能够容纳基本类型和对象,而ArrayList仅仅能容纳对象。

  • Array是指定大小的,而ArrayList大小是固定的。

  • Array没有提供ArrayList那么多功能,比方addAll、removeAll和iterator等。虽然ArrayList明显是更好的选择。但也有些时候Array比較好用。

(1)假设列表的大小已经指定,大部分情况下是存储和遍历它们。

(2)对于遍历基本数据类型,虽然Collections使用自己主动装箱来减轻编码任务,在指定大小的基本类型的列表上工作也会变得非常慢。

(3)假设你要使用多维数组,使用[][]比List<List<>>更easy。

25.ArrayList和LinkedList有何差别?

ArrayList和LinkedList两者都实现了List接口,可是它们之间有些不同。

(1)ArrayList是由Array所支持的基于一个索引的数据结构,所以它提供对元素的随机訪问。复杂度为O(1),但LinkedList存储一系列的节点数据。每一个节点都与前一个和下一个节点相连接。所以。虽然有使用索引获取元素的方法,内部实现是从起始点開始遍历,遍历到索引的节点然后返回元素。时间复杂度为O(n)。比ArrayList要慢。

(2)与ArrayList相比,在LinkedList中插入、加入和删除一个元素会更快。由于在一个元素被插入到中间的时候,不会涉及改变数组的大小,或更新索引。

(3)LinkedList比ArrayList消耗很多其他的内存,由于LinkedList中的每一个节点存储了前后节点的引用。

26.哪些集合类提供对元素的随机訪问?

ArrayList、HashMap、TreeMap和HashTable类提供对元素的随机訪问。

27.EnumSet是什么?

java.util.EnumSet是使用枚举类型的集合实现。当集合创建时,枚举集合中的全部元素必须来自单个指定的枚举类型,能够是显示的或隐示的。EnumSet是不同步的,不同意值为null的元素。它也提供了一些实用的方法,比方copyOf(Collection c)、of(E first,E…rest)和complementOf(EnumSet s)。

28.哪些集合类是线程安全的?

Vector、HashTable、Properties和Stack是同步类,所以它们是线程安全的,能够在多线程环境下使用。

Java1.5并发API包括一些集合类。同意迭代时改动,由于它们都工作在集合的克隆上。所以它们在多线程环境中是安全的。

29.并发集合类是什么?

Java1.5并发包(java.util.concurrent)包括线程安全集合类,同意在迭代时改动集合。

迭代器被设计为fail-fast的,会抛出ConcurrentModificationException。一部分类为:CopyOnWriteArrayList、 ConcurrentHashMap、CopyOnWriteArraySet。

30.BlockingQueue是什么?

Java.util.concurrent.BlockingQueue是一个队列,在进行检索或移除一个元素的时候,它会等待队列变为非空;当在加入一个元素时,它会等待队列中的可用空间。

BlockingQueue接口是Java集合框架的一部分,主要用于实现生产者-消费者模式。我们不须要操心等待生产者有可用的空间。或消费者有可用的对象。由于它都在BlockingQueue的实现类中被处理了。

Java提供了集中BlockingQueue的实现,比方ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue,、SynchronousQueue等。

**********

31.队列和栈是什么,列出它们的差别?

栈和队列两者都被用来预存储数据。java.util.Queue是一个接口,它的实现类在Java并发包中。队列同意先进先出(FIFO)检索元素,但并不是总是这样。Deque接口同意从两端检索元素。

栈与队列非常类似,但它同意对元素进行后进先出(LIFO)进行检索。

Stack是一个扩展自Vector的类,而Queue是一个接口。

32.Collections类是什么?

Java.util.Collections是一个工具类仅包括静态方法。它们操作或返回集合。它包括操作集合的多态算法,返回一个由指定集合支持的新集合和其他一些内容。这个类包括集合框架算法的方法,比方折半搜索、排序、混编和逆序等。

33.Comparable和Comparator接口是什么?

假设我们想使用Array或Collection的排序方法时。须要在自己定义类里实现Java提供Comparable接口。

Comparable接口有compareTo(T OBJ)方法,它被排序方法所使用。我们应该重写这种方法,假设“this”对象比传递的对象參数更小、相等或更大时,它返回一个负整数、0或正整数。

可是。在大多数实际情况下,我们想依据不同參数进行排序。

比方。作为一个CEO。我想对雇员基于薪资进行排序。一个HR想基于年龄对他们进行排序。这就是我们须要使用Comparator接口的情景。由于Comparable.compareTo(Object o)方法实现仅仅能基于一个字段进行排序,我们不能依据对象排序的须要选择字段。

Comparator接口的compare(Object o1, Object o2)方法的实现须要传递两个对象參数,若第一个參数比第二个小,返回负整数;若第一个等于第二个。返回0;若第一个比第二个大。返回正整数。

34.Comparable和Comparator接口有何差别?

Comparable和Comparator接口被用来对对象集合或者数组进行排序。Comparable接口被用来提供对象的自然排序。我们能够使用它来提供基于单个逻辑的排序。

Comparator接口被用来提供不同的排序算法,我们能够选择须要使用的Comparator来对给定的对象集合进行排序。

35.我们怎样对一组对象进行排序?

假设我们须要对一个对象数组进行排序,我们能够使用Arrays.sort()方法。假设我们须要排序一个对象列表,我们能够使用Collection.sort()方法。

两个类都实用于自然排序(使用Comparable)或基于标准的排序(使用Comparator)的重载方法sort()。Collections内部使用数组排序方法,全部它们两者都有同样的性能。仅仅是Collections须要花时间将列表转换为数组。

36.当一个集合被作为參数传递给一个函数时,怎样才干够确保函数不能改动它?

在作为參数传递之前,我们能够使用Collections.unmodifiableCollection(Collection c)方法创建一个仅仅读集合,这将确保改变集合的不论什么操作都会抛出UnsupportedOperationException。

37.我们怎样从给定集合那里创建一个synchronized的集合?

我们能够使用Collections.synchronizedCollection(Collection c)依据指定集合来获取一个synchronized(线程安全的)集合。

38.集合框架里实现的通用算法有哪些?

Java集合框架提供经常使用的算法实现,比方排序和搜索。Collections类包括这些方法实现。大部分算法是操作List的,但一部分对全部类型的集合都是可用的。部分算法有排序、搜索、混编、最大最小值。

39.大写的O是什么?举几个样例?

大写的O描写叙述的是。就数据结构中的一系列元素而言,一个算法的性能。

Collection类就是实际的数据结构。我们通常基于时间、内存和性能,使用大写的O来选择集合实现。

比方:

样例1:ArrayList的get(index i)是一个常量时间操作,它不依赖list中元素的数量。所以它的性能是O(1)。

样例2:一个对于数组或列表的线性搜索的性能是O(n),由于我们须要遍历全部的元素来查找须要的元素。

40.与Java集合框架相关的有哪些最好的实践?

(1)依据须要选择正确的集合类型。比方,假设指定了大小,我们会选用Array而非ArrayList。

假设我们想依据插入顺序遍历一个Map,我们须要使用TreeMap。假设我们不想反复。我们应该使用Set。

(2)一些集合类同意指定初始容量。所以假设我们能够预计到存储元素的数量,我们能够使用它,就避免了又一次哈希或大小调整。

(3)基于接口编程,而非基于实现编程。它同意我们后来轻易地改变实现。

(4)总是使用类型安全的泛型。避免在执行时出现ClassCastException。

(5)使用JDK提供的不可变类作为Map的key,能够避免自己实现hashCode()和equals()。

(6)尽可能使用Collections工具类,或者获取仅仅读、同步或空的集合,而非编写自己的实现。

它将会提供代码重用性,它有着更好的稳定性和可维护性。

来自:Sanesee
英文原文:http://www.javacodegeeks.com/2013/02/40-java-collections-interview-questions-and-answers.html
译文链接:http://www.sanesee.com/article/40-java-collections-interview-questions-and-answers

java面试题------40个Java集合面试问题和答案的更多相关文章

  1. 30 个 Java 集合面试问题及答案

    30 个 Java 集合面试问题及答案 Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 1.Java集合框架是什么 ...

  2. Java面试题总结之Java基础(二)

    Java面试题总结之Java基础(二) 1.写clone()方法时,通常都有一行代码,是什么? 答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有G ...

  3. Java面试题总结(一)---Java基础

    Java面试题总结(一)---Java基础 1.面向对象的特征有哪些? 答:面向对象的特征主要有以下几个: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方 ...

  4. 40个Java集合面试问题和答案

    Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 另外,码农网之前也整理过一篇关于Java集合面试题的文章:大公司最 ...

  5. (转)40个Java集合面试问题和答案

    Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点.这里,我列出了一些关于Java集合的重要问题和答案. 另外,码农网之前也整理过一篇关于Java集合面试题的文章:大公司最 ...

  6. 40个Java集合面试问题和答案【下】【转载】

    接上文:http://www.cnblogs.com/xujianbo/p/5148083.html 28.哪些集合类是线程安全的? Vector.HashTable.Properties和Stack ...

  7. 转:40个Java集合面试问题和答案

    转自牛客网:http://mp.weixin.qq.com/s?__biz=MjM5NDYxMzk1Nw==&mid=215319390&idx=1&sn=1ab621bc40 ...

  8. 百度搜索 “Java面试题” 前200页(面试必看)

    前言 本文中的题目来源于网上的一篇文章<百度搜索 "Java面试题" 前200页>,但该文章里面只有题目,没有答案.因此,我整理了一些答案发布于本文.本文整理答案的原则 ...

  9. 2018.6.20 Java考试试题总结(Java语言基础与面向对象编程)最新版

    Java考试试题总结 一.单选题(每题1分 * 50 = 50分) 1.java程序的执行过程中用到一套JDK工具,其中javac.exe指( B ) A.java语言解释器 B.java字节码编译器 ...

随机推荐

  1. java日志 -logback的使用和logback.xml详解(转)

    一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...

  2. 程序员减少bug

    1.认真理解需求 2.构思好程序逻辑流程,再编写 3.编写单元测试 4.多进行case测试,做好功能测试 5.互相review代码

  3. unity, mesh Collider

    关闭mesh Renderer以便查看mesh Collider "For Unity 5, we must also select "Convex" on the Me ...

  4. Meta Blogging

    Meta Blogging 由来 偶然想到说如果哪一天cnblogs挂了,那之前记录的随笔怎么办?可不可以把它们给download下来本地保存一份.正好看到有个库叫requests, 干嘛不试试看呢. ...

  5. ORACLE 11G在存储过程里面遍历游标, 调用job任务定时运行

    ORACLE存储过程里游标遍历.调用job定时运行 1,第一种使用For 循环 for循环是比較简单有用的方法. 首先.它会自己主动open和close游标.攻克了你忘记打开或关闭游标的烦恼. 其次, ...

  6. 带索引的tableView

    带索引的tableView 一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface Root ...

  7. eclipse workspace 优化

    换了新的工作空间,当然在开发之前先优化该工作空间啦! 1.换编码 2.优化加载项 去除不用的 3.优化代码检查   不用的去掉 4.禁止更新功能 5.更换字体其他个人偏好设置   微软雅黑 字体5号 ...

  8. Android开发日记(二)

    HashMap<String, Object> map;定义一个HashMap用来传递字符 TextView textView_JobTitle=(TextView)findViewByI ...

  9. 基于html5鼠标悬停图片动画展示效果

    分享一款基于html5鼠标悬停图片动画展示效果.里面包含两款不同效果的html5图片展示效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=" ...

  10. 分享JQuery动画插件Velocity.js的六种列表加载特效

    分享JQuery动画插件Velocity.js的六种列表加载特效.在这款实例中给中六种不同的列表加载效果.分别为从上飞入.从右侧飞入.从左侧飞入.和渐显.一起看下效果图: 在线预览   源码下载 实现 ...