java------集合List
来源:互联网 发布:品牌推广如何利用seo 编辑:程序博客网 时间:2024/06/07 01:37
Collection
|---List:元素是有序的,元素可以重复,因为该集合体系有索引
|----ArrayList:底层的数据结构是用的是数组 数据结构。 线程不同步。
|-----LinkList;底层的数据结构是用的链表结构
|------Vector; 底层数据结构 是数组 数据结构。 线程是同步的,支持枚举
|---Set: 元素是无序的(存入和去除的循序不一定一致),元素不可以重复;
|-----HashSet:底层数据结构是哈希表
HashSet:如何保证元素的唯一性;
如果元素的HashCode值相同,才会判断equals方法,是否为true
|-----TreeSet; 可以对Set集合元素进行排序。
底层数据结构是二叉树。
保证元素唯一性依据:comparTo方法return 0;
TreeSet的第二种排序方式;
当元素自身不具备比较性时,或者具备的比较性不是所需要的
这时需要让容器自身具备比较性。
定义了比较器,将比较器
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法
List:
特有方法,凡是可以操作角标的方法都是该体系特有的方法。
1.增
add(index,element);
addAll(index, Collection)
2.删
Remove(index)
3.改
Set(index, element)
4.查
get(indxx)
subList(from, to);
listIterator();
List 集合特有的迭代器,ListIterator是Iterator的子接口
在迭代式,不可以通过集合对象的方法操作集合中的元素。
会发成异常,所以在迭代器时,只能用迭代器方法操作元素可是Iterator方法只能对元素进行判断,去除,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。 该接口只能通过List集合的listIterator()方法获取。
下面介绍集合框架的共性方法:以ArrayList()来举例说明
import java.util.*;public class ArrayListDemo{ public static void main(String[] args) {ArrayList a1 = new ArrayList();//1 添加元素a1.add("java01");//这里是ArrayList的添加方法因为字符串也是对象 所以可以传字符串 这里a1.add("java02");a1.add("java03");sop("a1 = "+a1);//2 获取长度sop("长度为:" +a1.size());//获取长度//3 移除元素a1.remove(2);//移除第三个元素 移除时必须是在容器内 如果越界则会发生异常sop("a1 = " +a1);//4 判断元素sop("容器是否为空 "+a1.isEmpty());//判断容器内元素是否为空 为空 true 不为空falsesop("java01是否存在:"+a1.contains("java01"));//判断某元素是否存在// 求两个容器中的交集 用到 retainAll()方法 ArrayList a2 = new ArrayList();a2.add("java0001");a2.add("java0002");a2.add("java0003");a2.add("java0004");ArrayList a3 = new ArrayList();a3.add("java0001");a3.add("java0002");a3.add("java0006");a3.add("java0005");//a2.retainAll(a3);//求a2 在 a3中相同的部分//sop("a2和a3相同的部分为:"+a2);a2.removeAll(a3);//将a3在a2中相同的部分去掉sop("a2在a3中不同的部分并删除:"+ a2);sop("a3为:" + a3); } public static void sop(String st)//这个是接收String 类型的 {System.out.println(st); } public static void sop(Object obj)//这个是接收Object 类型的 {System.out.println(obj); }}
import java.util.ArrayList;import java.util.Iterator;//下面是遍历容器的方法public class ArrayListDemo2{ public static void main(String[] args) {method_get(); } // 5 遍历容器中的对象使用 iterator()方法 下面用个方法举例说明 public static void method_get() {ArrayList a4 = new ArrayList();a4.add("java0001");a4.add("java0002");a4.add("java0003");a4.add("java0004");Iterator it = a4.iterator();//通过把这个容器中的//sop(it.next());//获得容器中一个对象sop(it.hasNext());//判断容器中是否还有元素可以迭代,如果有返回truewhile(it.hasNext())//获取迭代器 用于去除容器中所有元素{ sop(it.next());} } public static void sop(Object obj) {System.out.println(obj); }}
//这里是ArrayList中特有的方法的使用import java.util.*;public class ListDemo{ public static void sop(Object obj) {System.out.println(obj); } public static void main(String[] args) {ArrayList b1 = new ArrayList();// 1, 增加元素b1.add("java001");b1.add("java002");b1.add("java003");b1.add("java004");sop("原集合是:" + b1);// 1,1 在指定位置添加元素;b1.add(1, "java111");sop("在角标为1的位置添加java111:" + b1);// 2,删除指定位置元素b1.remove(3);sop("删除角标为3的元素:" + b1);// 3,修改元素b1.set(3, "java333");sop("修改角标为3的元素" + b1);// 4,通过角标获取元素sop("获取角标1的元素:" + b1.get(1));// 4,1 获取所有元素 用循环就行了sop("获取所有元素:");for (int x = 0; x < b1.size(); x++){ sop("b[" + x + "]" + b1.get(x));}// 5, 通过对象获取位置 indexOf()sop("java001的位置 : " + b1.indexOf("java001"));List sub = b1.subList(0, 2);// 注意 这里是Listsop("角标从0到2的元素" + sub);// 6 列表迭代器 ListIterator()ListIterator li = b1.listIterator();// 这里是ListIterator 用这个可以添加和修改 // 用Iterator不可以while (li.hasNext()){ Object obj = li.next();// 因为不知道容器中是什么类型 所以接收用Object类型 if (obj.equals("java333")) {li.set("java3"); }}sop("替换后集合是:" + b1); }}
package List1;import java.util.*;/* * 需求:去除ArrayList重复元素 **/public class ArrayListDemo3{ public static void sop(Object obj) {System.out.println(obj); } public static void main(String[] args) {ArrayList a1 = new ArrayList();a1.add("java01");a1.add("java02");a1.add("java01");a1.add("java02");a1.add("java03");sop(a1);a1 = bijiao(a1);//进行比较sop(a1); } public static ArrayList bijiao(ArrayList a1)//这里的比较是简单的比较 没有对多个属性进行比较,下个例子会有 {//建立一个临时容器ArrayList new1 = new ArrayList();Iterator it = a1.iterator();//用于对a1进行遍历的 建立对象引用while(it.hasNext()){ Object obj = it.next(); if(!new1.contains(obj))//如果这个临时容器NEW1中不包含obj里面的元素 {new1.add(obj);//那么添加进入new1 }}return new1; }}
import java.util.ArrayList;/* *需求:将自定义对象作为元素存入ArrayList()数组中,并去除相同元素 *建立人类 属性有姓名 年龄 同姓名同年龄 视为重复元素 * *思路:1 对人描述 将数据封入对象 * 2 定义容器 将人进行存储 * 3 取出 **/import java.util.Iterator;class Person{ private String name; private int age; Person(String name, int age)// 重写构造方法 {this.name = name;this.age = age; } public boolean equals(Object obj) {if(!(obj instanceof Person))//instanceof 判断其左边对象是否为其右边类的实例{ return false;}Person p = (Person)obj;//强制转换return this.name.equals(p.name) && this.age == p.age; } public String getName() {return name; } public int getAge() {return age; }}public class ArrayList4{ public static void sop(Object obj) {System.out.println(obj); } public static void main(String[] args) {ArrayList a1 = new ArrayList();a1.add(new Person("lisi01", 23));a1.add(new Person("lisi02", 23));a1.add(new Person("lisi03", 25));a1.add(new Person("lisi04", 25));a1.add(new Person("lisi04", 25));a1 = bijiao(a1);Iterator it = a1.iterator();while (it.hasNext()){ // Object obj = it.next();//返回一个Object类型,因为Iterator不知道容器中是什么类型 // Person p = (Person)obj;//向下转型 将obj转成 person类型 Person p = (Person) it.next();// 一般写成这个简单形式 sop(p.getName() + "......" + p.getAge());} } public static ArrayList bijiao(ArrayList a1) {//建立一个临时容器ArrayList new1 = new ArrayList();Iterator it = a1.iterator();//用于对a1进行遍历的 建立对象引用while(it.hasNext()){ Object obj = it.next(); if(!new1.contains(obj))//如果这个临时容器NEW1中不包含obj里面的元素 {new1.add(obj);//那么添加进入new1 }}return new1; }}
*********************************************************************************************************************************************************
下面的是LinkList 的方法 链表
import java.util.*;/* * LinkedLink:特有方法 * addFirst(); * addLast(); * * getFirst(); * getLast(); * 获取元素,但不删除元素,如果集合中没有元素将异常 * * removeFirst(); * removeLast(); * 获取元素,并将元素删除,如果集合中没有元素将抛出异常 * * * jdk1.6后出现替代方法 * * offerFirst(); * offerLast(); * * peekFirst(); * peekLast(); * * poliFirst(); * poliLast() * * */public class LinkListDemo{ public static void sop(Object obj) {System.out.println(obj); } public static void main(String[] args) {//第一个位置添加 最后一个位置添加LinkedList link = new LinkedList();link.addFirst("java01");//在第一个位置添加link.addFirst("java02");link.addFirst("java03");link.addFirst("java04");/*link.addLast("java01");// 最后一个位置添加link.addLast("java02");link.addLast("java03");link.addFirst("java04");*/sop("链表::"+link);//获取元素sop("第一个元素:"+link.getFirst());//获取第一个元素sop("最后一个元素:"+link.getLast());//获取最后一个元素//获取元素并删除sop(link.removeFirst());sop(link);sop(link.removeLast());sop(link);sop("剩余的元素个数" +link.size());//遍历while(!link.isEmpty())//元素不为空{ sop("边遍历边删除:"+link.removeFirst()); } }}
- JAVA集合-List集合
- Java集合----List集合
- java集合------List集合总结
- Java集合之List集合
- Java集合—List集合
- java 集合 list
- java集合----------List
- java------集合List
- JAVA集合之List
- Java中的List集合
- java 操作list集合
- Java集合List接口
- Java List集合操作
- JAVA集合框架-List
- Java集合<二>List
- Java集合之List
- java的list集合
- Java集合之List
- iPhone开发 crash log
- HLSL固有函数 【Intrinsic Functions (DirectX HLSL)】
- Stack Overflow at line:0 IE下解决方案
- BookBlock:一个实现翻页效果的jQuery插件
- 浅谈4种常见的浏览器内核
- java------集合List
- 给自己的一封信————只有可怜的一年工作经验
- 处理概括关系之九 :Collapse Hierarchy(折叠继承关系)
- 各种nb资源
- IOS开发(85)之缩放图像
- 处理概括关系之十 :Form Template Method(塑造模板函数)
- Java 模拟浏览器的 http 请求
- linux下的inittab文件
- 真值,原码,反码,补码和移码 释义