(33)Java学习笔记——集合框架 / List集合&子类 / 常见数据结构
来源:互联网 发布:个人备案域名做淘宝客 编辑:程序博客网 时间:2024/05/16 13:45
List 集合
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
**可以通过索引去访问。
与 set 不同,列表通常允许重复的元素。特点:有序的(存储和取出的元素一致),可重复的
范例:
package cn.itcast_01;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/* * List 集合存储字符串并遍历 */public class ListDemo {public static void main(String[] args) {//创建集合对象List list = new ArrayList();//创建字符串并添加字符串list.add("hello");list.add("world");list.add("java");//遍历集合Iterator it = list.iterator();while(it.hasNext()){String s = (String) it.next();System.out.println(s);}}}
List 集合特有功能:
A / 添加功能
void add(int index, Object element) //在制定位置添加一个元素
B /获取功能:
Object get (int index) //获取制定位置的元素
C / 列表迭代器
ListIterator listIterator() //List 集合特有的迭代器
D / 删除功能
Object remove(int index) // 根据索引删除元素,返回被删除的元素
E / 修改功能
Object set (int index , Object element) //根据索引修改元素,返回被修改的元素
范例01:
package cn.itcast_02;import java.util.ArrayList;import java.util.List;/* * List集合的特有功能 * A / 添加功能void add(int index, Object element) //在制定位置添加一个元素B /获取功能:Object get (int index) //获取制定位置的元素C / 列表迭代器ListIterator listIterator() //List 集合特有的迭代器D / 删除功能Object remove(int index) // 根据索引删除元素,返回被删除的元素E / 修改功能Object set (int index , Object element) //根据索引修改元素,返回被修改的元素 */public class ListDemo {public static void main(String[] args) {//创建集合对象List list = new ArrayList();//创建对象并添加元素list.add("hello");list.add("world");list.add("java");System.out.println("list:"+list); //list:[hello, world, java]//void add(int index, Object element) //在制定位置添加一个元素list.add(1, "Android");//list.add(11."javaEE"); //有问题,越界了//list.add(3,"javaEE"); //没问题,可以最后一位添加System.out.println("list:"+list); //list:[hello, Android, world, java]//Object get (int index) //获取制定位置的元素System.out.println("get:"+list.get(2)); //get:world//Object remove(int index) // 根据索引删除元素,返回被删除的元素System.out.println("remove:"+list.remove(1)); //remove:AndroidSystem.out.println("list:"+list); // list:[hello, world, java]//Object set (int index , Object element) //根据索引修改元素,返回被修改的元素System.out.println("set:"+list.set(1, "Android")); //set:worldSystem.out.println("list:"+list); //list:[hello, Android, java]}}范例02:size() 和get() 方法结合使用
List集合的特有遍历功能: size() 和get() 方法结合使用
范例: size() 和get() 方法结合使用
package cn.itcast_03;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/* * ListIterator list列表迭代器 */public class ListIteratorDemo {public static void main(String[] args) {//创建集合对象List list = new ArrayList();//创建对象并添加list.add("hello");list.add("world");list.add("java");//Object get (int index) //获取制定位置的元素//System.out.println(list.get(0));//可以用size() 和 get()结合来遍历for(int x=0;x<list.size();x++){String s = (String) list.get(x);System.out.println(s);}}}ListIterator listIterator() //List 集合特有的迭代器
特有功能:Object previous() // 返回上一个元素位置
对应的方法:boolean hasPrevious() //判断前面是否有元素
要想逆向,必须先正向遍历,才能逆向遍历
范例03:
package cn.itcast_03;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/* * ListIterator List集合特有的迭代器 */public class ListIteratorDemo2 {public static void main(String[] args) {//创建集合对象List list = new ArrayList();//创建对象并添加list.add("hello");list.add("world");list.add("java");//ListIterator listIterator() //List 集合特有的迭代器ListIterator lit = list.listIterator(); //子类对象while(lit.hasNext()){String s = (String) lit.next(); //正向遍历System.out.println(s);}System.out.println("---------------------");//previous() 返回上一个元素while(lit.hasPrevious()){String s2 = (String)lit.previous(); //逆向遍历System.out.println(s2);}System.out.println("---------------------");//迭代器Iterator it = list.iterator();while(it.hasNext()){String s1 = (String) it.next();System.out.println(s1);}System.out.println("---------------------");}}
————————————————————————————————————
常见数据结构 :数据的组织方式
栈
队列
数组
链表
树
哈希值
List 的子类特点:
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
LinkedList
底层数据结构是列表,查询慢,增删快。
线程不安全,效率高。
ArrayList的使用
范例:存储字符串或者存储自定义对象并遍历
package cn.itcast_04;import java.util.ArrayList;import java.util.Iterator;/* * ArrayList的使用 * 存储字符串或者存储自定义对象并遍历 */public class ArrayListDemo {public static void main(String[] args) {//创建对象ArrayList al = new ArrayList();//创建字符串或对象并添加al.add("hello");al.add("world");al.add("java");//遍历方法1for(int x=0;x<al.size();x++){String s = (String) al.get(x);System.out.println(s);}System.out.println("----------------------");//遍历方法2Iterator it = al.iterator();while(it.hasNext()){String s = (String) it.next();System.out.println(s);}}}
Vector的特有功能
1 / 添加功能
public void addElement(Object obj)
2 / 获取功能
public Object elementAt(int index)
public Enumeration elements() //类似迭代器
-------------------------| boolean hasMoreElement()
-------------------------|Object nextElement()
package cn.itcast_05;import java.util.Enumeration;import java.util.Vector;/* * Vector的特有功能 * 1 / 添加功能public void addElement(Object obj)2 / 获取功能public Object elementAt(int index)public Enumeration elements()-------------| boolean hasMoreElement()-------------|Object nextElement() */public class VectorDemo {public static void main(String[] args) {//创建集合对象Vector v = new Vector();//public void addElement(Object obj) //添加功能v.addElement("hello");v.addElement("world");v.addElement("java");System.out.println(v);System.out.println("-----------------------");//遍历。public Object elementAt(int index)拿元素for(int x=0;x<v.size();x++){String s = (String) v.elementAt(x);System.out.println(s);}System.out.println("-----------------------");//public Enumeration elements() 类似迭代器Enumeration e =v.elements(); //返回的是实现类的对象while(e.hasMoreElements()){String s1 = (String) e.nextElement();System.out.println(s1);}}}
LinkedList的特有功能
A/ 添加功能:
public void addFirst(Object obj) //在第一个元素位置添加
public void addLast(Object obj) //在最后一个元素位置添加
B/ 获取功能
public Object getFirst(); //获取第一个元素
public Object getLast(); //获取最后一个元素
C/删除功能
public Object removeFirst() //删除第一个元素并返回它
public Object removeLast() //删除最后一个元素并返回它
范例:
package cn.itcast_06;import java.util.LinkedList;/* * LinkedList * A/ 添加功能:public void addFirst(Object obj) //在第一个元素位置添加public void addLast(Object obj) //在最后一个元素位置添加B/ 获取功能public Object getFirst(); //获取第一个元素public Object getLast(); //获取最后一个元素C/删除功能public Object removeFirst() //删除第一个元素并返回它public Object removeLast() //删除最后一个元素并返回它 */public class LinkedListDemo {public static void main(String[] args) {//创建集合对象LinkedList ll = new LinkedList();//创建字符串或对象并添加ll.add("hello");ll.add("world");ll.add("java");System.out.println(ll); //[hello, world, java]//public void addFirst(Object obj) //在第一个元素位置添加ll.addFirst("Android");System.out.println(ll); //[Android, hello, world, java]//public void addLast(Object obj) //在最后一个元素位置添加ll.addLast("javaEE");System.out.println(ll); //[Android, hello, world, java, javaEE]//public Object getFirst(); //获取第一个元素System.out.println("getFirst:"+ll.getFirst()); //getFirst:Android//public Object getLast(); //获取最后一个元素System.out.println("getLast:"+ll.getLast()); //getLast:javaEE//public Object removeFirst() //删除第一个元素并返回它System.out.println("removeFirst:"+ll.removeFirst()); //removeFirst:AndroidSystem.out.println(ll); //[hello, world, java, javaEE]//public Object removeLast() //删除最后一个元素并返回它System.out.println("removeLast:"+ll.removeLast()); //removeLast:javaEESystem.out.println(ll); //[hello, world, java]}}
练习:去除ArrayList集合中的重复字符串元素
方法1:
package cn.itcast_07;import java.util.ArrayList;import java.util.Iterator;/* * 练习:去除ArrayList集合中的重复字符串元素 * 思路: *创建集合对象 *添加多个字符串元素,包含内容相同的 *创建新集合 *遍历旧集合,得到每一个元素 *拿这个元素到新集合中对比有无,有就放弃,没有就添加进新集合 *遍历新集合 * */public class ArrayListTest {public static void main(String[] args) {//创建集合对象ArrayList array = new ArrayList();//添加多个字符串元素,并包含内容相同的array.add("hello");array.add("world");array.add("java");array.add("hello");array.add("world");array.add("java");array.add("hello");array.add("hello");array.add("world");System.out.println(array);//创建新集合ArrayList array2 = new ArrayList();//遍历旧集合,获取每一个元素Iterator it = array.iterator();while(it.hasNext()){String s = (String) it.next();//对比新集合,没有就添加if(!array2.contains(s)){array2.add(s);}}//遍历新集合for(int x=0;x<array2.size();x++){String s = (String) array2.get(x);System.out.println(s);}}}方法2:
package cn.itcast_07;import java.util.ArrayList;import java.util.Iterator;/* * 练习:去除ArrayList集合中的重复字符串元素 * 要求:不能创建新集合,就在原集合上进行操作 * 思路: *创建集合对象 *添加多个字符串元素,包含内容相同的 *参考选择排序方式,双重for嵌套。从0索引比较后面,再1索引比较后面。。。。。 *遍历新集合 * */public class ArrayListTest_02 {public static void main(String[] args) {//创建集合对象ArrayList array = new ArrayList();//添加多个字符串元素,并包含内容相同的array.add("hello");array.add("world");array.add("java");array.add("hello");array.add("world");array.add("java");array.add("hello");array.add("hello");array.add("world");System.out.println(array);//参考选择排序方式,双重for嵌套。从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--; //注意这个细节,当有连续的相同字符串时,需要重新检查删除元素的位置}}}//遍历集合Iterator it = array.iterator();while(it.hasNext()){String s =(String) it.next();System.out.println(s);}}}
- (33)Java学习笔记——集合框架 / List集合&子类 / 常见数据结构
- Java学习笔记——集合(List)
- JAVA学习笔记——List集合
- [学习笔记]Java集合框架之List集合
- java学习笔记集合框架概述及List集合
- java集合框架—List
- Java集合框架—List
- (36)Java学习笔记——集合框架 / Set集合
- (37)Java学习笔记——集合框架 / Map集合
- 集合框架--List常用子类
- 集合框架-List的子类
- java 集合学习笔记1-Collection 集合遍历 List子类特点
- 集合框架--Map集合常见子类对象
- Java数据结构笔记1——Java集合框架
- Java常见集合框架(八):List总结
- 黑马程序员java学习—集合框架List和Set
- Java学习笔记-------集合List
- 黑马程序员——集合框架collection集合接口及List子类
- 时钟高级版本
- commonChunkplugin配置项详解
- P1047 校门外的树
- DML操作及名称空间
- 数据结构实验之排序八:快速排序 递归
- (33)Java学习笔记——集合框架 / List集合&子类 / 常见数据结构
- HBase基本知识
- Spring Boot 示例节选
- 练习题
- 微信面试题-获取元素的最终background-color
- 数据结构实验之图论七:驴友计划
- leetcode:Edit Distance 动态规划--用于求两个词之间的相似度
- Mac入门(一)基本用法
- python 爬虫及相关