Java序谈之List接口、Vector类,LinkedList类
来源:互联网 发布:mysql应用 编辑:程序博客网 时间:2024/06/10 00:44
List接口相对collection的特殊方法
1、添加
关键词:add(index , 元素)
代码示例:
list.add(6,"ning");分析:注意这里的add中的index不能越界,最多取到list.size()的角标
2、删除
关键词:remove( index)
代码示例:
list.remove(1);分析:这里的index最多只能取到list.size()-1的角标
3、设置
关键词:set(index , 元素)
代码示例:
list.set(1, "zhoujielun");分析:这里的index角标最多也只能取到list.size()-1的位置
4、获取
关键词:get (index)
代码示例:
Object object = list.get(2);分析:注意这里的get()方法的返回值是Object类型的,需要一个Object接收
需求:在集合中存储"a""a""a""b""b""b""c""c""c" 要求去除重复元素
思路:可以设置另一个集合来接收原集合的数据,使用迭代器进行遍历,然后使用contains关键字进行判断
代码分析:
ArrayList arrayList1 = new ArrayList();arrayList1.add("a");arrayList1.add("a");arrayList1.add("a");arrayList1.add("b");arrayList1.add("b");arrayList1.add("b");arrayList1.add("c");arrayList1.add("c");arrayList1.add("c");ArrayList list9 = new ArrayList();Iterator iterator2 = arrayList1.iterator();while(iterator2.hasNext()) {Object next = iterator2.next();if(!list9.contains(next)) {list9.add(next);}}System.out.println(list9);分析:在遍历的代码中,一定注意不能出现两次next(),否则指针就会向下移动两次,就会少比较数值
拓展需求:如何去除重复对象?
思路:contains方法的核心是equals,并且equals的实质又是地址值之间的比较,在这里不同的对象有不同的地址值,因此使用地址值进行判断没有意义
在这里需要将equals的方法重写,换成我们需要的,并且重写tostring方法
代码分析:
ArrayList arrayList3 = new ArrayList();arrayList3.add(new Man("kobi", "insist"));arrayList3.add(new Man("kobi", "insist"));arrayList3.add(new Man("james", "fight"));arrayList3.add(new Man("james", "fight"));arrayList3.add(new Man("jordan", "exe"));arrayList3.add(new Man("jordan", "exe"));ArrayList arrayList4 = new ArrayList();Iterator iterator3 = arrayList3.iterator();while (iterator3.hasNext()) {Man man = (Man)iterator3.next();if(!arrayList4.contains(man)) {arrayList4.add(man);}}System.out.println(arrayList4);
Vector类的特殊方法
1、向末尾添加元素
关键词:addElement()
代码示例:
vector.addElement("a");2、
关键词:elements
作用:用于返回集合的枚举,用于使用枚举遍历集合
代码示例:
Vector vector = new Vector();vector.add("wangning");vector.add("wangning");vector.add("wangning");Enumeration elements = vector.elements();while (elements.hasMoreElements()) {System.out.println(elements.nextElement());}
LinkedList类的特殊方法
1、指定添加首尾元素
关键词:addFirst() addLast()
代码示例:
linkedList.addFirst("d");linkedList.addLast("e");2、删除首尾元素
关键词:removeFirst() removeLast()
代码示例:
linkedList.removeFirst();linkedList.removeLast();
3、获取首尾元素
关键词:getFirst() getLast()
代码示例:
linkedList.getFirst();linkedList.getLast();注意:这里的get方法需要一个 object来接收
需求:如果数组中有"b"这个元素,就添加 “Oh-Yes”这个元素
思路:如果使用正常的迭代器的话,在循环中会出现并发编程异常的情况,需要使用LinkedList类的特殊迭代器 listiterator()
代码分析:
LinkedList linkedList = new LinkedList();linkedList.add("wangning");linkedList.add("ning");linkedList.getFirst();linkedList.getLast();ListIterator listIterator2 = linkedList.listIterator();while (listIterator2.hasNext()) {if(listIterator2.next().equals("ning")) {listIterator2.add("wangning");}}System.out.println(linkedList);
ArrayList和LInkedList的区别
分别是通过数组和链表实现
数组和链表的特点和区别
数组:查询块,增删慢
特点:连续的
数组在初始化的时候会默认分配十个空间,一旦不够用以*1.5倍的方式新建数组
查询快:由于元素跟角标一一对应,可以很快得到指定 角标的值
增删慢:增加一个元素,需要将后面的元素整体向后位移一位。删除一个元素,需要将后面所有的元素整体向前位移一位
链表:查询慢,增删快
特点:碎片化的,不连续的,每一个元素保存上一个元素和下一个元素的地址
查询慢:先判断元素角标处于前半部分还是后半部分,然后从头部或者尾部进行查找
增删快:增加一个元素,只需要在指定位置添加元素,元素中保存上一个和下一个元素的地址,上下的元素也保存它的地址
删除一个元素,将元素删除,上下元素各自保存对方的地址
栈结构和队列结构
栈结构:先入后出,
举例:程序中,如果主函数进入栈后立即出栈,main函数中的方法没有意义
队列结构:先入先出
举例:这就相当于按顺序排队,先排队的先运行,自然也就先结束
- Java序谈之List接口、Vector类,LinkedList类
- Java集合之三List接口及其实现类ArrayList、LinkedList、Vector
- java程序员从笨鸟到菜鸟之(二十五)集合之List接口的子实现类ArrayList,LinkedList,Vector
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- Java集合框架-1.【集合类】【Collection接口】【List】【ArrayList】【Vector】【LinkedList】
- java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
- List接口的实现类---ArrayList、LinkedList、Vector之间的区别--------(java复习)
- java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析
- Java集合之LinkedList(实现List接口)
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
- JavaSE入门学习35:Java集合框架之List接口及其实现类ArrayList和LinkedList
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- java集合框架之List------03_02 ArrayList Vector LinkedList
- List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源码解析
- List接口下 Arraylist Linkedlist Vector区别
- Java类集之ArrayList、LinkedList、 Vector、Map
- List接口的实现类LinkedList
- 剑指offer——面试题:把字符串转换为整数
- leetcode 3 Longest Substring Without Repeating Characters
- leetcode 592. Fraction Addition and Subtraction C++的stringstream的一个很好的示例
- nginx四 之缓存模块
- Access数据库的模糊查询
- Java序谈之List接口、Vector类,LinkedList类
- C++——动态数组
- 大数据学习系列之五 ----- Hive整合HBase图文详解
- Convolutional Sequence to Sequence Learning笔记
- zabbix-配置zabbix agent
- JSP动态静态包含
- 学习Tango with django(2)
- JavaScript高级程序设计(第3版)笔记(五)下
- http://blog.csdn.net/ld_1090815922/article/details/70550789