黑马程序员——JAVA基础之List集合
------- android培训、java培训、期待与您交流!
----------
Collection :
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
|--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
|--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
|--Set:元素是无序,元素不可以重复。
List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element); 在列表的指定位置插入指定元素
addAll(index,Collection); 将指定 collection 中的所有元素都插入到列表中的指定位置
import java.util.ArrayList; public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); al.add(1,"04");
System.out.println(al); ArrayList al1 = new ArrayList(); al1.add("05");
al1.add("06");
System.out.println(al1); al.addAll(1,al1);
System.out.println(al);
}
}
删
remove(index); 移除列表中指定位置的元素
import java.util.ArrayList; public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); al.remove(1);
System.out.println(al); }
}
改
set(index,element); 用指定元素替换列表中指定位置的元素
import java.util.ArrayList; public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); al.set(1,"04");
System.out.println(al); }
}
查
get(index): 返回列表中指定位置的元素。
subList(from,to); 返回列表中指定的之间的部分,包含头不包含尾
listIterator(); 返回此列表元素的列表迭代器(按适当顺序)。
int indexOf(obj):获取指定元素的位置。
listIterator(int index); 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
*
* 获取集合中元素的方法演示
*
*/ public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); List sub = al.subList(0,2);
System.out.println(sub); System.out.println("01 对应的角标是:"+al.indexOf("01")); for (int i=0;i<al.size();i++)//方法一
{
System.out.println(al.get(i));
} for (Iterator it = al.iterator();it.hasNext(); )//方法2
{
System.out.println(it.next());
} }
}
List集合特有的迭代器。ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是 Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。
import java.util.ArrayList;
import java.util.ListIterator; /**
*
* ListIterator演示
*
*/ public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); ListIterator li = al.listIterator();
System.out.println(li.hasNext());//判断后面有没有元素
System.out.println(li.hasPrevious());//判断前面有没有元素 //把集合里面的元素替换成另一种元素
while (li.hasNext())
{
Object obj = li.next(); if (obj.equals("02"))
li.set("04");
} System.out.println(li.hasNext());//判断后面有没有元素
System.out.println(li.hasPrevious());//判断前面有没有元素
System.out.println(al);
}
}
import java.util.ArrayList;
import java.util.Iterator; /**
* 去除ArrayList中的重复元素
* 定义一个临时容器储存
* 如果不相同存入,相同就不存
* 便利完成之后返回
*/
public class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("01");
al.add("04");
al.add("02");
System.out.println(al+"------"+al.size()); System.out.println(SingleElement(al));
} //定义一个函数,返回一个ArrayList集合,参数ArrayList。功能是去除ArrayList中的重复元素.
public static ArrayList SingleElement(ArrayList al)
{
ArrayList arrayBuffer = new ArrayList(); for (Iterator it = al.iterator();it.hasNext(); )
{
Object obj = it.next(); if (!arrayBuffer.contains(obj))
{
arrayBuffer.add(obj);
}
}
return arrayBuffer; } }
<span style="font-size:14px;"><strong></strong></span><pre class="java" name="code">import java.util.ArrayList;
import java.util.Iterator; /**
* 将自定义元素存到ArrayList结构中去,并去掉重复元素
* 比如:存人对象。同姓名同年龄,视为同一个人。为重复元素。
*
* 思路:
* 对人描述,将数据封装进人对象。
* 定义容器,将人存入。
* 取出。
* List集合判断元素是否相同,依据是元素的equals方法。
*/
public class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add(new Person("zhangsan",13));
al.add(new Person("lisi",13));
al.add(new Person("zhangsan",13));
al.add(new Person("zhangsan",15));
al.add(new Person("lisi",13));
al.add(new Person("lisi",12)); al = singleElement(al); for (Iterator it = al.iterator();it.hasNext(); )
{
Person p = (Person)it.next();
System.out.println(p.getName()+"------"+p.getAge());
}
} //定义一个函数,返回ArrayList,参数ArrayList。函数功能去除ArrayList集合中的重复元素
public static ArrayList singleElement(ArrayList al)
{
ArrayList arrayBuffer = new ArrayList(); for (Iterator it = al.iterator();it.hasNext(); )
{
if (!arrayBuffer.contains(it.next()))
{
arrayBuffer.add(it.next());
}
}
return arrayBuffer;
}
} //声明一个Person对象,具有年龄和名字的属性
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))
return false;
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.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;
}
}
LinkedList:特有方法:
addFirst(); 将指定元素插入此列表的开头。
addLast(); 将指定元素添加到此列表的结尾。
getFirst(); 返回此列表的第一个元素。
getLast(); 返回此列表的最后一个元素。
get方法获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException
removeFirst(); 移除并返回此列表的第一个元素。
removeLast(); 移除并返回此列表的最后一个元素。
remove方法获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException
import java.util.LinkedList; /**
*
* LinkedList演示
*
*/ public class ListDemo
{
public static void main(String[] args)
{
LinkedList ll = new LinkedList(); ll.add("02");
ll.addFirst("01");
ll.addLast("03");
System.out.println(ll); System.out.println(ll.getFirst());
System.out.println(ll.getLast());
System.out.println(ll); System.out.println(ll.removeFirst());
System.out.println(ll.removeLast());
System.out.println(ll); //打印移出方式
while (!ll.isEmpty())
{
System.out.println(ll.removeLast());
}
}
}
在JDK1.6出现了替代方法:
offerFirst(); 在此列表的开头插入指定的元素。
offerLast(); 在此列表末尾插入指定的元素。
peekFirst(); 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
peekLast(); 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
获取元素,但不删除元素。如果集合中没有元素,会返回null。
pollFirst(); 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
pollLast(); 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
获取元素,但是元素被删除。如果集合中没有元素,会返回null。
堆栈和队列:
堆栈:先进后出 如同一个杯子。
队列:先进先出 First in First out FIFO 如同一个水管。
import java.util.LinkedList; /**
*
* 用LinkedList模拟一个堆栈结构的
*
*/ public class DuiZhanDemo
{
public static void main(String[] args)
{
DuiZhan dz = new DuiZhan(); dz.myAdd("01");
dz.myAdd("02");
dz.myAdd("03"); while (!dz.isNull())
{
System.out.println(dz.myGet());
}
}
} //堆栈结构:先进后出
class DuiZhan
{
private LinkedList link; DuiZhan()
{
link = new LinkedList();
} public void myAdd(Object obj)
{
link.addFirst(obj);
} public Object myGet()
{
return link.removeFirst();
} public boolean isNull()
{
return link.isEmpty();
}
}
------- android培训、java培训、期待与您交流!
----------
黑马程序员——JAVA基础之List集合的更多相关文章
- 黑马程序员——JAVA基础之Map集合
------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...
- 黑马程序员——JAVA基础之set集合
------- android培训.java培训.期待与您交流! ---------- Set: 元素是无序(存入和取出的顺序不一定一致),元素不可以重复. Set接口中常用的类: ...
- 黑马程序员——JAVA基础之简述集合collection
------- android培训.java培训.期待与您交流! ---------- 集合: 为什么出现集合类? • 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对 ...
- 黑马程序员——JAVA基础之Vector集合
------- android培训.java培训.期待与您交流! ---------- 基本已被淘汰 枚举就是Vector特有的取出方式.枚举和迭代器很像.其实枚举和迭代是一样的. 因为枚举的名称 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- 黑马程序员——JAVA基础之泛型和通配符
------- android培训.java培训.期待与您交流! ---------- 泛型: JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...
- 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象
------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...
随机推荐
- A380上11万一张的机票什么享受?来看看
上个月底,全球奢华航班排行榜出炉,新加坡航空头等舱荣登第一.不过,比头等舱更豪奢的,将近两万美元一张往返票的“套间”又是怎么样的呢? 新加坡航空的一名常旅客Derek Low就体验了一把全球最豪奢的坐 ...
- c# access插入null值
c# 插入access数据库 提示错误: Parameter @DeviceLocation has no default value. 参数@DeviceLocation 的有没有默认值. Stri ...
- Xrun 将 app 转化为 IPA
xcodebuild命令行打包,在使用xcodebuild编译后发现有些东西有些临时性质的东西,依然存在,搜索了一些资料,找到有clean的命令:在之前打包都是生成app文件,将app打包成ipa文件 ...
- JS教程:词法作用域和闭包 (网络资源)
varclassA = function(){ ; } classA.prototype.func1 = function(){ var that = this, ; function a(){ re ...
- linux下获取帮助
-h --help man 代號 代表內容 使用者在shell中可以操作的指令或可执行档 系統核心可呼叫的函数与工具等 一些常用的函数(function)与函数库(library),大部分是C的函数库 ...
- 设置navigation baritem方法
UIButton *RightBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect]; [RightBtn setImage:[UIImage im ...
- (转)mysql账号权限密码设置方法
原文:http://www.greensoftcode.net/techntxt/2013410134247568042483 mysql账号权限密码设置方法 我的mysql安装在c:\mysql 一 ...
- javascript树形菜单简单实例
参考博客地址:http://chengyoyo2006.blog.163.com/blog/static/8451734820087843950604/ <!DOCTYPE HTML PUBLI ...
- GCC,GDB,Makefile和IO复用函数
2015.1.22 c高级的环境搭建:GCC编译器:全称 GNU CC,是GNU工具(tool chain)的一种,源码编译成机器码,gcc的编译依赖于很多小工具4.3.3和3.4.3版本的比较稳定 ...
- Selenium - IWebDriver 控制scroll bar到底部
有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作.一般用到操作滚动条的会两个场景: 注册时的法律条文需要阅读,判断用户是否阅读的标准是:滚动条是否拉 ...