Java API —— ArrayList类 Vector类 LinkList类
package arraylistdemos; import java.util.ArrayList; import java.util.Iterator; /*** Created by gao on 15-12-15.*/ /** List的子类特点:* ArrayList:* 底层数据结构是数组,查询快,增删慢* 线程不安全,效率高* Vector:* 底层数据结构是数组,查询快,增删慢* 线程安全,效率低* LinkedList:* 底层数据结构是链表,查询慢,增删快* 线程不安全,效率高** 案例:* 使用List的任何子类存储字符串或者存储自定义对象并遍历。** ArrayList的使用。* 存储字符串并遍历*/ public class ArrayListDemo01 {public static void main(String[] args) {//创建集合对象ArrayList arrayList = new ArrayList();//创建元素对象,并添加元素arrayList.add("believe ");arrayList.add("in ");arrayList.add("yourself ");//遍历Iterator it = arrayList.iterator();while(it.hasNext()){String s = (String)it.next();System.out.println(s);}System.out.println("----------------------");for(int x = 0; x < arrayList.size(); x++){String s = (String)arrayList.get(x);System.out.println(s);}} }
例子2:
package arraylistdemos; import java.util.ArrayList; import java.util.Iterator; /*** Created by gao on 15-12-15.*/ public class ArrayListDemo02 {public static void main(String[] args) {//创建集合对象ArrayList arrayList = new ArrayList();//创建学生对象Student s1 = new Student("武松", 30);Student s2 = new Student("鲁智深", 40);Student s3 = new Student("林冲", 36);Student s4 = new Student("杨志", 38);//添加元素 arrayList.add(s1);arrayList.add(s2);arrayList.add(s3);arrayList.add(s4);//遍历Iterator it = arrayList.iterator();while (it.hasNext()) {Student s = (Student) it.next();System.out.println(s.getName() + "---" + s.getAge());}System.out.println("------------");for (int x = 0; x < arrayList.size(); x++) {Student s = (Student) arrayList.get(x);System.out.println(s.getName() + "---" + s.getAge());}} }
以上两个例子的添加和遍历方法对Vector和LinkedList都是可行的,下面讲解Vector特有的功能。
package vectordemos; import java.util.Enumeration; import java.util.Vector; /*** Created by gao on 15-12-15.*/ public class VectorDemo01 {public static void main(String[] args) {//创建集合对象Vector v = new Vector();//添加功能v.addElement("hello");v.addElement("world");v.addElement("java");//遍历for(int x = 0; x < v.size(); x++){String s = (String) v.elementAt(x);System.out.println(s);}System.out.println("-------------");Enumeration e = v.elements();while(e.hasMoreElements()){String s = (String) e.nextElement();System.out.println(s);}} }
package linklistdemos; import java.util.LinkedList; /*** Created by gao on 15-12-15.*/ public class LinkListDemo01 {public static void main(String[] args) {// 创建集合对象LinkedList link = new LinkedList();// 添加元素link.add("hello");link.add("world");link.add("java");// public void addFirst(Object e)link.addFirst("javaee");// public void addLast(Object e)link.addLast("android");// public Object getFirst()System.out.println("getFirst:"+link.getFirst());// public Obejct getLast()System.out.println("getLast:"+link.getLast());System.out.println("link:"+link);// public Object removeFirst()System.out.println("removeFirst:"+link.removeFirst());// public Object removeLast()System.out.println("removeLast:"+link.removeLast());// 输出对象名System.out.println("link:"+link);} }
输出结果:
package exercisedemos; import java.util.ArrayList; import java.util.Iterator; /*** Created by gao on 15-12-15.*/ /** ArrayList去除集合中字符串的重复值(字符串的内容相同)** 分析:* A:创建集合对象* B:添加多个字符串元素(包含内容相同的)* C:创建新集合* D:遍历旧集合,获取得到每一个元素* E:拿这个元素到新集合去找,看有没有* 有:不搭理它* 没有:就添加到新集合* F:遍历新集合*/ public class Exercise01 {public static void main(String[] args) {// 创建集合对象ArrayList array = new ArrayList();// 添加多个字符串元素(包含内容相同的)array.add("hello");array.add("world");array.add("java");array.add("world");array.add("java");array.add("world");array.add("world");array.add("world");array.add("world");array.add("java");array.add("world");// 创建新集合ArrayList newArray = new ArrayList();// 遍历旧集合,获取得到每一个元素Iterator it = array.iterator();while(it.hasNext()){String s = (String) it.next();if(!newArray.contains(s)){newArray.add(s);}}Iterator it2 = newArray.iterator();while (it2.hasNext()){String s = (String) it2.next();System.out.println(s);}} }
方式二:不能创建新的集合
package exercisedemos; import java.util.ArrayList; /*** Created by gao on 15-12-15.*/ /** 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)* 要求:不能创建新的集合,就在以前的集合上做。*/ public class Exercise02 {public static void main(String[] args) {// 创建集合对象ArrayList array = new ArrayList();// 添加多个字符串元素(包含内容相同的)array.add("hello");array.add("world");array.add("java");array.add("world");array.add("java");array.add("world");array.add("world");array.add("world");array.add("world");array.add("java");array.add("world");// 由选择排序思想引入,我们就可以通过这种思想做这个题目// 拿0索引的依次和后面的比较,有就把后的干掉// 同理,拿1索引...for (int x = 0; x < array.size() - 1; x++) {for (int y = x + 1; y < array.size(); y++) {if (array.get(x).equals(array.get(y))) {array.remove(y);y--; //注意删除后会有一个替位 }}}for (int x = 0; x < array.size(); x++) {String s = (String) array.get(x);System.out.println(s);}} }
package exercisedemos; /*** Created by gao on 15-12-9.*/ public class 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;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof Student)) return false;Student student = (Student) o;if (age != student.age) return false;if (!name.equals(student.name)) return false;return true;} }
测试类:
package exercisedemos; import java.util.ArrayList; import java.util.Iterator; /*** Created by gao on 15-12-15.*/ /** 需求:去除集合中自定义对象的重复值(对象的成员变量值都相同)** 我们按照和字符串一样的操作,发现出问题了。* 为什么呢?* 我们必须思考哪里会出问题?* 通过简单的分析,我们知道问题出现在了判断上。* 而这个判断功能是集合自己提供的,所以我们如果想很清楚的知道它是如何判断的,就应该去看源码。* contains()方法的底层依赖的是equals()方法。* 而我们的学生类中没有equals()方法,这个时候,默认使用的是它父亲Object的equals()方法* Object()的equals()默认比较的是地址值,所以,它们进去了。因为new的东西,地址值都不同。* 按照我们自己的需求,比较成员变量的值,重写equals()即可。* 自动生成即可。*/ public class Exercise03 {public static void main(String[] args) {// 创建集合对象ArrayList array = new ArrayList();// 创建学生对象Student s1 = new Student("林青霞", 27);Student s2 = new Student("林志玲", 40);Student s3 = new Student("凤姐", 35);Student s4 = new Student("芙蓉姐姐", 18);Student s5 = new Student("翠花", 16);Student s6 = new Student("林青霞", 27);Student s7 = new Student("林青霞", 18);// 添加元素 array.add(s1);array.add(s2);array.add(s3);array.add(s4);array.add(s5);array.add(s6);array.add(s7);// 创建新集合ArrayList newArray = new ArrayList();Iterator it = array.iterator();while (it.hasNext()) {Student s = (Student) it.next();if (!newArray.contains(s)) {newArray.add(s);}}for (int x = 0; x < newArray.size(); x++) {Student s = (Student)newArray.get(x);System.out.println(s.getName()+"---"+s.getAge());}} }
package exercisedemos; /*** Created by gao on 15-12-15.*/ 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.getFirst();return link.removeFirst();}public boolean isEmpty(){return link.isEmpty();} }
测试类:
package exercisedemos; /*** Created by gao on 15-12-15.*/ /** MyStack的测试*/ public class Exercise04 {public static void main(String[] args) {MyStack ms = new MyStack();ms.add("hello");ms.add("world");ms.add("java");while (!ms.isEmpty()){System.out.println(ms.get());}} }
转载于:https://www.cnblogs.com/yangyquin/p/5049163.html
Java API —— ArrayList类 Vector类 LinkList类相关推荐
- 详解Java中ArrayList、Vector、LinkedList三者的异同点
转载:https://my.oschina.net/zzw922cn/blog/491631 一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于"数&quo ...
- Java API接口统一格式返回结果类
废话不多说,直接正文. 首先,我们需要定义规则(返回的格式).如http的返回状态码 404,500,200等.我们都知道404是找不到资源,200是正常的.由此可以知道,每一个状态码都有一个对应的说 ...
- Java中ArrayList和Vector的区别
首先想说的是: Vector是在Collections API之前就已经产生了的, 而ArrayList是在JDK1.2的时候才作为Collection framework的一部分引入的. 它们都是在 ...
- ArrayList、Vector、LinkedList的特点和区别
ArrayList.Vector.LinkedList类均在java.util包中,均为可伸缩数组. 1)ArrayList和Vector都是基于存储元素的Object[] array来实现的,它们会 ...
- 14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)
本篇主要是集合框架基础和List集合,Map集合等等后续更 集合 14.1 集合框架 14.1.1 概念 14.1.2 集合架构 14.2 Collection接口 14.2.1 常用方法 14.3 ...
- 很多人搞不清楚的两个类Vector,ArrayList
Vector,ArrayList_哪一个更好 Vector 和 ArrayList的不同 有的时候 Vector更好一些;有的时候ArrayList 更好一些;有的时候你一个也不想用.但愿,你不是在期 ...
- List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源代码解析
学习List接口实现类 ArrayList Vector LinkedList List接口的实现类中最经常使用最重要的就是这三个:ArrayList.Vector.LinkedList. JDK ...
- java学习--基础知识进阶第五天--API、 Object类 System类、日期相关类、包装类正则表达式...
今日内容介绍 u Object类 & System类 u 日期相关类 u 包装类&正则表达式 第1章 Object类 & System类 1.1 Object类 1.1. ...
- java api 第一个类是_JAVA之Object常用API
[Object类.常用API] 主要内容Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 第一章 Object类 1.1 概 ...
最新文章
- QtCreator动态编译jsoncpp完美支持x86和arm平台
- 一个类型思考了 8 年,依旧是最好的! | 每日趣闻
- 用了那么多年的 Master 分支或因种族歧视而成为历史?
- VTK:绘制轴AXES用法实战
- “约见”面试官系列之常见面试题之第六十三篇之get和post区别(建议收藏)
- php无刷新跳转,用#号实现web页面的无刷新跳转
- jfinal分页时使用like
- Python 使用pyinstaller将py文件发布成exe程序
- 重磅!Google ARCore 和京东 AR 联合举办消费应用创新大赛
- 计算机主板性能由什么决定,电脑内存条频率取决于CPU还是主板?
- stm8单片机内部存储EEPROM字节读写实例解析
- 概率 无穷数列求和公式
- win10运行python没有硬编码器_windows下关于python的编解码问题
- 苹果恢复出厂设置报4013错误问题
- 交互设计师必须知道的五大交互设计流程
- 【C语言】案例四十六 点名册(一)
- Spring Boot修改启动神图
- SIBT SSHT 2023展位火爆抢定中 共燃建筑空间智慧浪潮
- Java中接口的理解和使用
- 第十二届蓝桥杯--第二场--B-双阶乘
热门文章
- 《HTML5+JavaScript动画基础》——2.4 JavaScript对象
- 《像计算机科学家一样思考Python(第2版)》——2.7 注释
- zabbix自定义用户key
- SharePoint2010升级到SharePoint2013操作手册
- Silverlight开发之MVVM模式
- python文件和路径操作
- 百度seo排名规则_百度seo排名优化要点讲解(已帮助5184人)
- linux安装jdk笔记
- Linux驱动程序中的并发控制
- 《基于MFC的OpenGL编程》Part 18 Reading objects from the OBJ File Format