java基础---类集框架一
来源:互联网 发布:windows snmp 软件 编辑:程序博客网 时间:2024/05/21 17:15
学习笔记 - collection、List、ArrayList
一、collection简介
* |--List:元素是有序的,元素可以重复,因为该集合体系有索引。
* |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。可变长度数组。
* |--LinkedList:底层使用的是链表数据结构。特点:增删的速度很快,查询的速度很慢。
* |--Vector:底层使用的是数据结构;线程是同步的 ;被ArrayList替代了。1.0 。比较浪费空间
*
* |--Set:元素是无序的,元素不可以重复。 set:
* 特有方法。凡是可以操作角标的方法都是该体系特有的方法。
* 增:
* add(index,element);
* addAll(index,Collection);
* 删:
* remove(index);
* 改:
* set(index,element);
* 查:
* get(index); subList(from,to);
*
* listIterator();
二、List使用简介
*
* List集合特有的迭代器。ListIterator是Iterator的子接口
* 在遍历过程中进行增删改查
*
* 在迭代时,不可以通过集合对象的方法操作集合中的元素。
* 因为会发生ConcurrentModificationExcepiton异常。
*
* 所以,在迭代器时,只能使用迭代器的方法操作元素,可是Iterator方法是有限的,
* 只能对元素进行判断,取出,删除操作。
* 如果想要其他的操作如:添加、修改等,就需要使用其子接口,ListIterator.
*
* 该接口只能通过List集合的listIterator 方法获取。
三、List使用示例
public class ListDemo {
public static void main(String[] args) {
method_1();
method_2();
}
public static void method_2(){
//演示列表迭代器
ArrayList al = new ArrayList();
// 1.添加元素。
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
sop(al);
//能用的原因:List下面都带有角标
ListIterator li = al.listIterator();
sop("hasNext:"+li.hasNext());
sop("hasProviros:"+li.hasPrevious());
while(li.hasNext()){
Object obj = li.next();
if(obj.equals("java2")){
// li.add("java006");
li.set("java002");
}
}
sop("hasNext:"+li.hasNext());
sop("hasProviros:"+li.hasPrevious());
sop(al);
while(li.hasPrevious()){
sop(li.previous());
}
sop(al);
//在迭代过程中,准备添加或者删除元素
//对同一个集合同时进行添加和取出,会发生并发错误。
// Iterator it = al.iterator();
// while(it.hasNext()){
// sop("next:"+it.next());
//
// }
}
public static void method_1(){
ArrayList al = new ArrayList();
// 1.添加元素。
al.add("java1");
al.add("java2");
al.add("java3");
al.add("java4");
//在指定位置添加元素
al.add(1,"java01");
sop(al);
//删除指定位置的元素
al.remove(2);
sop(al);
//修改元素
al.set(2, "java007");
sop(al);
//通过角标获取元素
sop("get(1):"+al.get(1));
sop(al);
//获取所有元素
for(int x = 0;x<al.size();x++){
System.out.println(al.get(x));
}
Iterator it = al.iterator();
while(it.hasNext()){
sop(it.next());
}
//通过IndexOf获取对象的位置
sop("index="+al.indexOf("java007"));
List sub = al.subList(1, 3);
sop(sub);
}
public static void sop(Object obj) {
System.out.println(obj);
}
四、LinkedList简介
* LinkedList特有方法: addFirst(); addLast();
*
* getFirst(); getLast();
*获取元素但是不删除元素,如果集合中没有元素,会出现 NoSuchElementExcption
*
* removeFirst(); removeLast();
* 获取元素但是删除元素,如果集合中没有元素,会出现 NoSuchElementExcption
*
*
*
* 在JDK1.6出现了替代方法。
* offerFirst();添加元素
* offerLast();
*
* peekFirst();
* peekLast();
* 获取元素但是不删除元素,如果集合中没有元素,会返回Null
*
* pollFirst();
* pollLast();
* 获取元素但是删除元素,如果集合中没有元素,会返回Null
五、LinkedList使用示例
public class LinkedListDemo {
public static void main(String[] args) {
method_1();
method_2();
}
public static void method_2(){
LinkedList link = new LinkedList();
// 原因:将元素一个一个的添加到了头部
link.addFirst("java1");
link.addFirst("java2");
link.addFirst("java3");
link.addFirst("java4");
// 原因:将元素一个一个的添加到了尾部
link.addLast("java5");
//没有这个元素异常 NoSuchElementExcption
while(!link.isEmpty()){
//删除最后一个元素
sop(link.removeLast());
}
}
public static void method_1() {
LinkedList link = new LinkedList();
// 原因:将元素一个一个的添加到了头部
link.addFirst("java1");
link.addFirst("java2");
link.addFirst("java3");
link.addFirst("java4");
// 原因:将元素一个一个的添加到了尾部
link.addLast("java5");
sop(link);
// 获取第一个元素
sop(link.getFirst());
// 获取最后一个元素
sop(link.getLast());
sop("删除第一个元素:" + link.removeFirst());
sop(link.getFirst());
sop(link.size());
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
六、ArrayList使用示例
* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
*
* 比如:存人对象,同姓名同年龄,看做是同一个人。为重复元素。
*
* 思路:
* 1,对人进行描述,将数据封装进入人对象。
* 2,定义容器,将人存入。
* 3,取出。
*
* List集合判断元素是否相同,依据的是元素的equals方法
public static void main(String[] args) {
ArrayList a2 = new ArrayList();
//判断元素是否相同,应该是用equals方法
a2.add(new Person(11,"小王"));
a2.add(new Person(22,"小李"));
a2.add(new Person(11,"小王"));
a2.add(new Person(33,"小票"));
a2.add(new Person(44,"小妹"));
a2 = singleArr(a2);
Iterator it = a2.iterator();
while(it.hasNext()){
//需要向下转型
Person p = (Person) it.next();
sop(p.getName()+"......"+p.getAge());
}
sop("remove 小票:"+a2.remove(new Person(33, "小票")));
}
/**
* 定义的临时的容器
* @param a
* @return
*/
public static ArrayList singleArr(ArrayList a){
//新建的ArrayList
ArrayList arr = new ArrayList();
//应该是传进来的对象使用迭代器
Iterator it = a.iterator();
while(it.hasNext()){
Object obj = it.next();
if(!arr.contains(obj))
arr.add(obj);
}
return arr;
}
public static void sop(Object obj){
System.out.println(obj);
}
}
/**
* Person 类来自Object的equals方法,但是比较的是地址值
* @author Administrator
*
*/
class Person{
private int age;
private String name;
Person(int age,String name){
this.age = age;
this.name = name;
}
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person p = (Person) obj;
System.out.println(this.name+"...."+p.name);
System.out.println(this.age +"..."+p.age);
return this.name.equals(p.name)&&this.age==p.age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- java基础---类集框架一
- Java基础--集合框架<一>
- JAVA基础集合框架(一)
- java基础--->类集框架
- Java基础--集合框架(一)
- Java基础—集合框架(一)
- 黑马程序员----Java基础-----集合框架(一)
- 【框架基础】:Java反射机制详解(一)
- 【框架基础】:Java反射机制详解(一)
- 【框架基础】:全面解析Java注解(一)
- java基础(4)集合框架(一)
- java基础---类集框架二
- java基础---类集框架三
- Java的类集框架一
- 基础框架搭建(一)
- Java基础之集合框架(一)--Collection、List、LinkedList、HashSet
- java中的反射(学习框架的基础)(一)
- Java基础之集合框架(一)--Collection、List、LinkedList、HashSet
- CentOS安装gcc报错的问题
- EXISTS、IN与JOIN性能分析
- 蓝桥杯:标题-带分数
- PHP(6)只记录我的学习历程 html(表单标志)
- ios nsstring(补充 与不同类型之间的转化)
- java基础---类集框架一
- 线段树学习——入门篇
- VC实现HTTP协议的GET和POST方法
- Linux内核中实现生产者与消费者(避免无效唤醒)
- 一份130+题的题目列表
- CentOS LNMP安装
- UVa 340 Master-Mind Hints
- 创建oracle数据库,用户、表空间、设置角色权限脚本
- linux 网络编程相关结构体