集合(二)
来源:互联网 发布:护理专业网络教育 编辑:程序博客网 时间:2024/05/21 10:27
集合第二部分 List
List的3个儿子存储字符串和自定义对象并遍历代码演示
1.List的3个儿子(掌握)
(1)List
|--ArrayList
底层数据结构是数组,查询快,增删慢.
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢.
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快.
线程不安全,效率高
刘意老师总结:什么时候用谁?
线程安全:
是:Vector
否:ArrayList,LinkedList
查询多:ArrayList
增删多:LinkedList
如果你什么都不懂,就用ArrayList。
加入泛型,并遍历。
(2)ArrayList存储字符串和自定义对象并遍历。
//自定义类Studentclass Student{ //姓名 private String name; //年龄 private int age; //无参构造 public Student(){ } //带参构造 public Student(String name,int age){ this.name = name; this.age = age; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getAge(){ return age; } public void setAge(int age){ this.age = age; }}
import java.util.*;/* *需求:ArrayList存储字符串和自定义对象并遍历,加入泛型,并遍历 */class ArrayListTest{ public static void main(String[] args) { //创建集合对象并使用泛型 ArrayList<Student> array = new ArrayList<Student>(); //创建元素对象并给值 Student stu1 = new Student("zhangsan",20); Student stu2 = new Student("lisi",25); Student stu3 = new Student("wangwu",26); //把元素对象传给集合对象 array.add(stu1); array.add(stu2); array.add(stu3); //遍历集合 三种方式 //方法一:迭代器 while Iterator<Student> it = array.iterator(); while(it.hasNext()){ //因为使用了泛型所以不用强转 Student s = it.next(); System.out.println(s.getName()+"------"+s.getAge()); } System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); //方法二:一般for循环遍历 for(int i = 0 ; i < array.size() ; i++){ Student s = array.get(i); System.out.println(s.getName()+"--------"+s.getAge()); } System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); //方法三:加强for循环遍历,好处减少代码量 for(Student s : array){ System.out.println(s.getName()+"--------"+s.getAge()); } }}
import java.util.*;class ArrayTest2 {public static void main(String[] args) {//创建集合对象并使用泛型ArrayList<String> array = new ArrayList<String>();//给集合对象赋值array.add("hello");array.add("world");array.add("java");//遍历集合 三种方法//方法一:迭代器 whileIterator<String> it = array.iterator();while(it.hasNext()){//因为使用了泛型所以不需要不需要强制转换数据类型String s = it.next();System.out.println(s);}System.out.println("----------------------------------");//方法二:使用一般for循环迭代集合for(int i = 0; i < array.size(); i++){String s = array.get(i);System.out.println(s);}System.out.println("----------------------------------");//方法三:使用增强forfor(String s:array){System.out.println(s);}}}
</pre><strong> (3)LinkedList存储字符串和自定义对象并遍历。</strong><pre name="code" class="html">import java.util.*;class LinkedListTest2{ public static void main(String[] args) { //创建集合对象并使用泛型 LinkedList<String> link = new LinkedList<String>(); //集合对象调add方法并赋值 link.add("hello"); link.add("world"); link.add("java"); //遍历集合---有3种方法 //方法一:迭代器 Iterator<String> it = link.iterator(); while(it.hasNext()){ String s = it.next(); System.out.println(s); } System.out.println("-----------------------------"); //方法二:普通for循环 for(int i = 0;i < link.size();i++){ String s = link.get(i); System.out.println(s); } System.out.println("-----------------------------"); //方法三:增强for循环 for(String s : link){ System.out.println(s); } }}
//自定义类Studentclass Student{ //姓名 private String name; //年龄 private int age; //无参构造 public Student(){ } //带参构造 public Student(String name,int age){ this.name = name; this.age = age; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getAge(){ return age; } public void setAge(int age){ this.age = age; }}
import java.util.*;class LinkedListTest3{ public static void main(String[] args) { //创建集合对象并使用泛型 LinkedList<Student> link = new LinkedList<Student>(); //创建元素对象并赋值 Student stu1 = new Student("zhangsan",20); Student stu2 = new Student("lisi",25); Student stu3 = new Student("wangwu",26); //把元素对象添加进集合对象中 link.add(stu1); link.add(stu2); link.add(stu3); //循环遍历 三种方式 //方法一:迭代 //构建迭代器 Iterator<Student> it = link.iterator(); while(it.hasNext()){ Student s = it.next(); System.out.println(s.getName()+"**********"+s.getAge()); } System.out.println("------------------"); //方法二:普通for循环 for(int i = 0;i < link.size();i++){ Student s = link.get(i); System.out.println(s.getName()+"*********"+s.getAge()); } System.out.println("------------------"); //方法三:增强for循环 for(Student s:link){ System.out.println(s.getName()+"**********"+s.getAge()); } }}
用LinkedList模拟栈数据结构。(面试题)
package cn.itcast.homework;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(); } //判断 public boolean isEmpty(){ return link.isEmpty(); }}package cn.itcast.homework;//操作MyStackpublic class MyStackTest { /** * @param args */ public static void main(String[] args) { MyStack m = new MyStack(); m.add("hello"); m.add("java"); m.add("world"); while(!m.isEmpty()){ String s = (String)m.get(); System.out.println(s); } }}
(4)Vector存储字符串和自定义对象并遍历。`
import java.util.*;class VectorTest{ public static void main(String[] args) { //创建集合对象 Vector<String> v = new Vector<String>(); //调用集合对象的add方法赋值 v.add("hello"); v.add("world"); v.add("java"); //遍历----三种方法 //方法一:迭代器 Iterator<String> it = v.iterator(); while(it.hasNext()){ String s = it.next(); System.out.println(s); } System.out.println("---------------------"); //方法二:一般for for(int i = 0;i < v.size();i++){ String s = v.get(i); System.out.println(s); } System.out.println("---------------------"); //方法三:增强for for(String s:v){ System.out.println(s); } }}
import java.util.*;class VectorTest2{ public static void main(String[] args) { //创建集合对象并使用泛型 Vector<Student> v = new Vector<Student>(); //创建元素对象并赋值 Student stu1 = new Student("zhangsan",20); Student stu2 = new Student("lisi",25); Student stu3 = new Student("wangwu",24); //把元素对象添加进集合对象中 v.add(stu1); v.add(stu2); v.add(stu3); //遍历集合---三种方法 //方法一:迭代器 Iterator<Student> it = v.iterator(); while(it.hasNext()){ Student s = it.next(); System.out.println(s.getName()+"*****"+s.getAge()); } System.out.println("---------------------------"); //方法二:一般for循环遍历 for(int i = 0;i < v.size();i++){ Student s = v.get(i); System.out.println(s.getName()+"*****"+s.getAge()); } System.out.println("---------------------------"); //方法三:增强for循环遍历 for(Student s:v){ System.out.println(s.getName()+"*****"+s.getAge()); } }}
(5)遍历的方式:
A:迭代器
B:增强for
C:普通for
增强for是用来替代迭代器的。
如果仅仅是遍历,就用A或者B。
如果遍历的时候,需要获取索引就用C。
2.泛型(了解)
(1)一种特殊的数据类型,在实例化类的时候,或者调用方法的时候才明确数据的类型。
(2)格式:
<数据类型>
(3)好处:
A:将运行期间的异常提前到了编译期间
B:避免了强制类型转换
C:优化了程序设计
(4)在哪里用?
自己看API,发现类或者接口后面有<>,最好用泛型。
一般都是在集合中用。
(5)泛型的分类
A:泛型类
B:泛型方法
C:泛型接口
4:增强for(掌握)
(1)一种简单的遍历数组或者Collection集合的方式。
(2)格式:
for(数组或者Collection集合中的元素类型 变量 : 数组或者Collection集合)
{
使用变量即可.
}
注意:
只适合遍历数据,被他用作目标的对象不能使null.
- 集合(二)
- 集合(二)
- 集合学习(二)
- 集合复习(二)
- 集合(二)
- Scala集合(二)
- 集合(二)
- 集合(二)
- 集合初探(二)
- java集合(二)
- 集合(二)
- Notification集合(二)
- 集合类(二)
- Java集合(二)
- Scala集合(二)
- Java集合(二)
- 集合(二)
- JAVA---------集合(二)
- kdb 入门
- FTPClient上传 中文目录、中文文件名乱码问题
- 使用java连接hive,并执行hive语句详解
- 黑马程序员_日记04(java基础加强01)
- OpenJMS程序实现消息的发送和接收
- 集合(二)
- 求数组的子数组之和的最大值
- CSS记录
- iOS 7: 如何为iPhone 5S编译64位应用。
- 水题大作战-updated continuously
- 数据挖掘十大经典算法
- 使用java连接hive,并执行hive语句详解
- UVa - 10194 - Train Swapping
- 后悔和妥协