A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jekyll 中级黑马   /  2015-9-27 00:37  /  270 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.Iterator;

  4. public class T01 {

  5.         public static void main(String[] args) {
  6.                
  7.                 /*
  8.                  1. 集合框架
  9.                  Collection(接口)
  10.                          List(接口)
  11.                                  ArrayList
  12.                                  LinkedList
  13.                          Set(接口)
  14.                                   HashSet
  15.                  Map(接口)
  16.                          HashMap
  17.                  
  18.                  2. Collection和Map的区别
  19.                          Collection:放的就是一个一个的元素
  20.                          Map:放的是键值对
  21.                         
  22.                  3. List和Set区别
  23.                          List:可以重复,并且有序
  24.                          Set:不可以重复,不做任何处理,就是没有序的                 
  25.                         
  26.                  4. ArrayList和LinkedList的区别
  27.                          ArrayList:模拟了一个数组,他的空间是连续。
  28.                                  他如果做删除,插入的动作的时候,效率比较低。
  29.                                  根据索引访问数据的时候,效率比较高。
  30.                                  遍历数据的时候,效率比较高。
  31.                          LinkedList:是链表,他的空间不是连续。
  32.                                  内存的空间利用率会比较高。
  33.                                  他如果做删除,插入的动作的时候,效率比较高。
  34.                                  根据索引访问数据的时候,效率比较低。
  35.                                  遍历数据的时候,效率比较低。
  36.                                  
  37.                  5. 如果想让一个类型进行“foreach”迭代,必须实现哪一个接口?
  38.                                  Iterable<E>

  39.                  
  40.                  6. 为什么使用泛型
  41.                          不适用泛型的坏处:会频繁的出现类型转换
  42.                                  类型不安全。
  43.                                  因为会出现频繁的类型转换效率会比较低
  44.                                  不利于程序的撰写,写程序容易出错。很多错误只能在运行时发现。
  45.                          使用了泛型以后:
  46.                                  因为在声明的时候就指明了他的数据类型,
  47.                                  所以,在编译时就可以发现错误。有利于提高开发效率。
  48.                                  因为在声明的时候就指明了他的数据类型,不会出现类型转换,
  49.                                  他是类型安全的。
  50.                                  
  51.                  7. 什么叫做拆箱和装箱
  52.                          装箱:从基本数据类型到引用类型的隐式转换
  53.                          拆箱:从引用类型到基本数据类型的显式转换
  54.                         
  55.                  8. 重写equals和hashCode
  56.                     equals比较的是地址,如果你想改变比较的逻辑
  57.                             那么就需要重写equals。
  58.                             重写equals就一定要重写hashCode。
  59.                     hashCode:这一般是通过将该对象的内部地址转换成一个整数来实现的
  60.                                  有很多集合HashTable,HashSet等等,这些集合都带了Hash这个词
  61.                                  这个词意味着快,他为什么快,因为他会根据hashCode生成一个索引目录
  62.                                  为了提高效率的,如果你不重写hashCode就会影响HashXXX检索的性能。
  63.                  
  64.                  9. Object里面常用的方法
  65.                          hashCode()
  66.                          toString()
  67.                         boolean equals(Object obj)
  68.                
  69.                  10. Iterator<E> iterator() :为什么要有Iterator
  70.                          因为Collection的remove方法在迭代删除的时候不安全。
  71.                          所以提供了iterator方法,返回迭代器。
  72.                          通过迭代器遍历的时候删除数据是安全。
  73.                  * */
  74.                
  75.                 Collection<LongCat> longCats = new ArrayList<LongCat>();
  76.                 longCats.add(new LongCat("1001", "意大利"));
  77.                 longCats.add(new LongCat("1002", "美国"));
  78.                 longCats.add(new LongCat("1003", "香港"));
  79.                 longCats.add(new LongCat("1004", "大陆"));
  80.                
  81.                 for (LongCat longCat2 : longCats) {
  82.                         System.out.println(longCat2);
  83.                 }
  84.                
  85.                 //看看包含不包含1002的龙猫boolean contains(Object o)  
  86.                 boolean bln = longCats.contains(
  87.                                 new LongCat("1002", "美国")
  88.                                 );
  89.                
  90.                 System.out.println(bln);
  91.                
  92.                 //演示循环的时候删除数据
  93.                 //longCats.remove(new LongCat("1002", "美国"));
  94.                 Iterator<LongCat> it = longCats.iterator();
  95.                 while(it.hasNext())
  96.                 {
  97.                         LongCat cat = it.next();
  98.                         //it.remove();
  99.                 }
  100.                
  101.                 for (LongCat longCat2 : longCats) {
  102.                         System.out.println(longCat2);
  103.                 }
  104.                
  105.                 /*
  106.                  <T> T[]  toArray(T[] a)   
  107.                  */
  108.                 LongCat[] cats = new LongCat[longCats.size()];
  109.                 LongCat[] cats2 = longCats.toArray(cats);
  110.                 for (int i = 0; i < cats2.length; i++) {
  111.                         System.out.println(cats2[i]);
  112.                 }               
  113.         }

  114. }

  115. class LongCat implements Comparable<LongCat>
  116. {
  117.         private String dna;
  118.         public String getDna() {
  119.                 return dna;
  120.         }
  121.         public void setDna(String dna) {
  122.                 this.dna = dna;
  123.         }
  124.         public String getName() {
  125.                 return name;
  126.         }
  127.         public void setName(String name) {
  128.                 this.name = name;
  129.         }
  130.         private String name;
  131.         public LongCat(String dna, String name) {
  132.                 super();
  133.                 this.dna = dna;
  134.                 this.name = name;
  135.         }
  136.         @Override
  137.         public String toString() {
  138.                 return "LongCat [dna=" + dna + ", name=" + name + "]";
  139.         }
  140.         @Override
  141.         public int hashCode() {
  142.                 final int prime = 31;
  143.                 int result = 1;
  144.                 result = prime * result + ((dna == null) ? 0 : dna.hashCode());
  145.                 return result;
  146.         }
  147.         @Override
  148.         public boolean equals(Object obj) {
  149.                 if (this == obj)
  150.                         return true;
  151.                 if (obj == null)
  152.                         return false;
  153.                 if (getClass() != obj.getClass())
  154.                         return false;
  155.                 LongCat other = (LongCat) obj;
  156.                 if (dna == null) {
  157.                         if (other.dna != null)
  158.                                 return false;
  159.                 } else if (!dna.equals(other.dna))
  160.                         return false;
  161.                 return true;
  162.         }
  163.         @Override
  164.         public int compareTo(LongCat o) {
  165.                 return o.getDna().compareTo(this.getDna());
  166.         }
  167. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马