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

主要内容有:
一:常见的数据结构(了解)
二;List的三个儿子;(掌握)
  1.ArrayList:数据存储时数组的形式,查询快,增删慢.线程不安全,效率很高.
  2.Vector:数据存储时数组的形式,查询快,增删慢.线程安全,效率低.
  3.LinkedList:数据存储是链表的形式,查询慢,增删快.线程不安全,效率高.
三:泛型(了解)
四:增强for(掌握)


一:常见的数据结构;
   首先我们要思考下list为什么要有Arraylist,LinckedList,Vector.这是因为三个儿子的数据结构的存储有可能不一样.由此我们延伸到对于数据结构的一些大致了解.
  数据结构是存储数据的方式.其大致有线性表(数组),栈,队列,链表,树,图等等.这个面试会让你们说出他们的特点.在去面试前要好好准备下.现在稍微了解下就行.譬如:
    栈:主要特点就是先进后出.这个可以参考给子弹夹上子弹的原理.
    队列:主要特点是先进先出.这个可以参考火车进山洞的原理.
    数组;存储同一种数据类型的多个元素的容器.特点:查询快,增删慢.
    链表:把多个结点连接起来的一串数据.其使用特点是 查询慢,增删快
二List的三个儿子:
  1.ArrayList:
   用ArrayListc存储自定义Student类对象并遍历
public class ArrayListTest {
public static void main(String[] args) {
  // 创建集合对象
  ArrayList array = new ArrayList();

  // 创建元素对象
  Student s1 = new Student("马云", 48);
  Student s2 = new Student("史玉柱", 47);
  Student s3 = new Student("俞敏洪", 49);

  // 添加元素
  array.add(s1);
  array.add(s2);
  array.add(s3);

  // 遍历集合
  Iterator it = array.iterator();
  while (it.hasNext()) {
   // Exception in thread "main" java.lang.ClassCastException:
   // cn.itcast_01.Student cannot be cast to java.lang.String
   // String s = (String) it.next();
   // System.out.println(s);
   Student s = (Student) it.next();
   System.out.println(s.getName() + "***" + s.getAge());
  }

//这使用的是用For循环来遍历对象.
  for (int x = 0; x < array.size(); x++) {
   Student s = (Student) array.get(x);
   System.out.println(s.getName() + "***" + s.getAge());
  }
}
}
2.LinkedList的特殊功能:
  A:添加
    void addFirst(Object obj);//在已定义集合中添加到其元素的最前面;
    void addLast(Object obj);//在已定义集合中添加到其元素的最后面  B:删除
    Object removeFirst();//删除集合中最左面的元素
    Object removeLast();//删除集合中最右面的元素;
  c.获取
    Object getFirst();//获得集合中最左面的元素
    Object getLast();//获得集合中最右面的元素;
3.用LinkedList 来演示栈数据的先进后出特点
  package cn.itcast01;
import java.util.LinkedList;
public class Mystack {
private LinkedList link;
public Mystack(){
  link=new LinkedList();
}
public void add(Object obj){
  link.addFirst(obj);
}
public Object get(){
  return link.removeFirst();
}

}
******************************************************************************************************
package cn.itcast01;
public class LinkedListTest {
public static void main(String[] args) {
  Mystack my=new Mystack();
  my.add("Hello");
  my.add("Word");
  my.add("Java");
  System.out.println(my.get());
  System.out.println(my.get());
  System.out.println(my.get());
}

}
4.Vector的一些方法名即添加获取功能 现在已不常用.所以了解即可.
5.删除字符串中的重复元素
package cn.itcast03;
import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListTest {
public static void main(String[] args) {
  ArrayList arr=new ArrayList();
  arr.add("haha");
  arr.add("hehe");
  arr.add("xixi");
  arr.add("haha");
  arr.add("haha");
  arr.add("xixi");
  for(int i=0;i<arr.size()-1;i++){
   for(int j=i+1;j<arr.size();j++){
    if(arr.get(i).equals(arr.get(j))){
     arr.remove(j);
     j--;
     
    }
   }
  }
  Iterator ite =arr.iterator();
   while(ite.hasNext()){
    String ss=(String)ite.next();
    System.out.println(ss);
   }
  }
}

三:泛型
泛型:从字面上讲,是广泛的数据类型.
是一种特殊的类型,它把指定类型的工作推迟代码声明并实例化类或方法的时候进行.
在使用泛型前:
在使用前;
   A;代码中有很多的黄色警告线
   B.有一个运行期的异常ClassCastException
  使用泛型后的好处:
   A:把运行时期的异常提前到编译期间/
   B:避免了强制类型转换;
   C:惊醒了代码优化'
举一个简单的实例:
//简略引用包的步骤;
class Test
    public static void main(String[]args){
     ArrayList<String> array=new ArrayList<String>();
     array.add("Hello");
     array.add("World")'
     array.add(10);//这样就会直接报错 不会再出现什么运行异常.在早期就把问题给解决掉
  Iterator<String> ite=array.iterator();
  while(ite.hasNext()){
  String  ss=(String)ite.next();//迭代器用了泛型后,就可以不用再写强制类型转换了
//可以直接这样写String ss=ite,next();
System.out.println(ss);
}
}
四:增强For循环;
这是用来遍历数组和集合的一种比较简单的方式";
例 1class Test{
public static void mian(String[]args){
int []arr={1,2,3,4};
for(int x:arr){
Syste.out.println(x);
}
}
}




      

0 个回复

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