android培训、java培训、期待与您交流! ----------
集合:
Collection是接口类型,不可以创建对象,子类已经实现了接口,可以创建对象
Collection主要分2个部分如下
|--List
|--ArrayList
|--LinkedList
--addfirst()
--addLast()
--getFirst()
--getLast()
|--Vector
|--Set
|--HashSet
|--TreeSet
java集合主要有三种类型
1. List: 是一个有序集合(存进去取出来顺序是一样的);可以放重复元素
List特有功能
--add(角标,插入元素) 在指定位置插入元素
--set(index,元素) 修改指定位置的元素
--get(int index) 获取元素的角标
--subList(startindex,endindex) 截取指定位置的元素
常用的类有:
ArrayList: 底层采用的是数组存储元素,所以ArrayList适合查询操作,不适合频繁的随机增删元素
LinkedList: 底层采用的是双向链表这种存储结构,链表适合频繁增删元素,不适合查询操作
Vector: 底层和ArrayList集合相同, 但是Vector是线程安全,效率较低,现在很少用.
2. Set:
|-- 判断重复元素的依据是,对象中的hashCode方法和equals方法
|-- 当哈希值一致时,集合会再次调用equals,当equals返回true时,判定同一对象
|-- 当哈希值不一致时,判定不是同以对象,不在调用equals方法
|-- 当哈希值一致时,集合会再次调用equals,当equals放回false时,判定不同一对象
|-- HashSet数据结构是哈希表,也叫桶子结构
TreeMap: |-- 对对象进行自然的排序
|-- 参考的是对象是否具备比较功能,对象实现的comparable接口,复写compareTo方法
|-- 参考compareTo方法返回值
|-- 第二种排序,TreeSet集合,构造函数接收自定义的比较器,需要实现Comparator 接口,复写compare方法
|-- 参考compare方法中的返回值
3. Map是一个无序的集合,集合中包含一个键值对,一个值对象
键对象允许重复,值对象不允许重复
<Iterator>Iterator是超级接口,Collection继承了Iterator
Iterator有一个方法是iterator(),是一个迭代器
Iterator靠三个方法完成迭代,可以使用迭代器去遍历集合
hasNext();
next();
remove();
4. Collection定义了集合的共性功能
4.1 添加
--add(e)
--addAll(collection)
4.2 删除
--remove(e)
--removeAll(collection)
4.3 判断
--contains(e)
--isEmpty()
4.4 获取
--iterator()
--size()
4.5 获取交集
--retainsAll()
4.6 集合变数组
--toArray()
//代码示例
import java.util.*;
class CollectionDemo01
{
public static void main(String[] args)
{
//创建一个集合
ArrayList<String> c = new ArrayList<String>();
//向集合中添加元素
c.add("java01");
c.add("java02");
c.add("java03");
c.add("java04");
//打印集合
System.out.println("打印集合c..."+c);
//获取集合长度
System.out.println("size获取集合长度..."+c.size());
//删除元素
c.remove("java03");
System.out.println("删除元素..."+c);
//判断元素
System.out.println("判断元素......."+c.contains("java02"));
System.out.println("判断是否为空..."+c.isEmpty());
//在迭代时循环中next调用一次,就要hasNext判断一次
Iterator it =c.iterator();
while(it.hasNext())
{
System.out.print(it.next()+", ");
}
c = singleElement(c);
System.out.print(c);
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
}
*/
/*
将自定义对象作为元素存储到ArrayLIist集合中,并去除重复元素
List集合判断元素是否相同 依据的是元素的equals()方法
//代码示例
思路:
1. 对对象进行描述,将数据封装进入对象
2. 定义容器,将数据存入
3. 取出
import java.util.*;
class CollectionDemo01
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add(new Person("zhangsan01",20));
al.add(new Person("zhangsan02",21));
al.add(new Person("zhangsan03",22));
al.add(new Person("zhangsan04",23));
al.add(new Person("zhangsan05",24));
Iterator it = al.iterator();
while(it.hasNext())
{
//Person p = (Person)it.next();
Person p = (Person)it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}
}
class Person
{
private String name;
private int age;
Person(String name, int age)
{
this.name = name;
this.age = age;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
}