list
+Collection 这个接口extends自 --java.lang.Iterable接口
├+List(接口 代表有序,可重复的集合。列表)
│├ ArreyList (Class 数组,随机访问,没有同步,线程不安全)
│├ Vector (Class 数组 同步 线程全)
│├ LinkedList (Class 链表 插入删除 没有同步 线程不安全)
│└ Stack (Class)
└+Set(接口 不能含重复的元素。仅接收一次并做内部排序,集)
│├ HashSet (Class)HashSet 是哈希表实现,其中的数据是无序的,可以且仅能放入一个null
│├ LinkedHashSet (Class)
│└ TreeSet (Class)TreeSet 是二差树实现的,其中数据是自动排好序的,不允许放入null值
+Map(接口)
├ +Map(接口 映射集合)
│ ├ HashMap (Class 不同步,线程不安全。除了不同和允许使用null 键值之外,与Hashtable大致相同)
│ ├ Hashtable (Class 同步 ,线程安全 。不允许实施null 键值)
│ ├ +SortedMap 接口
│ │ ├ TreeMap (Class)
│ ├ WeakHashMap (Class)
-----------------------------------List 接口
Llist: 有序的,并且可以插入重复的元素
ArrayList : 底层由数组实现 : 用来做查询 速度快
LinkedList : 底层是由双向链表数据结构实现: 用来做增删改 速度快 CRUD
使用:
List<Person> ls = new ArrayList<Person>();
Person p = new Person("a");
Person p1 = new Person("b");
Person p2 = new Person("c");
ls.add(p);
ls.add(p1);
ls.add(p2);
ls.add(p);
// ls.remove(p);
// for (Person person : ls) {
// System.out.println(person);
// }
// for (int i = 0; i < ls.size(); i++) {
// System.out.println(ls.get(i));
// }
Iterator<Person> it = ls.iterator();//游标循环得出数据
while (it.hasNext()) {
Person person = (Person) it.next();
System.out.println(person);
}
}
----------------- Set 和 List 集合:声明集合是不需要指定长度
hashSet与treeSet例:
public class People {//用来操作的类
private String name;
@Override
public String toString() {
return this.name;
}
public People(String name) {
this.name = name;
}
}
import java.util.Set;
import java.util.TreeSet;
/**
* 使用相对较少
* 集合的相关的set的treeset的操作
* treeset实现set接口的相关功能,用于将泛型数据类型存入集合,并能进行相关的操作
* 类比hashset大致相同 可以额外进行指定的排序
* @author Administrator
*
*/
public class Tree_Set {
public static void main(String[] args) {
Set<People> q1 = new TreeSet<People>();
People p = new People("qwe");
//在集合中存入相同的对象时,它会自动的保留一个,去除相同的
q1.add(p);
q1.add(new People("xxx"));
q1.add(new People("yyy"));
q1.add(p);
for (People people : q1) {
System.out.println(people);
}
}
}
/**
* 常用
* 集合的相关的set的hashset的操作
* hashset实现set接口的相关功能,用于将泛型数据类型存入集合,并能进行相关的操作
* 相关的子方法没有完全的列出,可以通过.的方法查看
* @author Administrator
*
*/
public class Hash_Set {
public static void main(String[] args) {
Set<People> q = new HashSet<People>();
People p = new People("qwe");
//在集合中存入相同的对象时,它会自动的保留一个,去除相同的
q.add(p);
q.add(new People("xxx"));
q.add(new People("yyy"));
q.add(p);
for (People people : q) {
//输出结果可以看出,set数无序的,并且没有下标
System.out.println(people);
}
//获取集合的长度
System.out.println(q.size());
//Iterator是接口,不能直接进行new操作
//而q.iterator返回的是Iterator类型,
Iterator<People> i = q.iterator();
//如果仍有元素可以迭代,则返回 true
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
map 接口 存储多个数据的时候 是 《K,V》 key 对应 value 值 一个key对应一个value
K 和 V 都可以放object 使用 建议 K值 建议放String 类型
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import collection_Set.People;
/**
* hashmap 一个key 对应一个value 可以多个key对应一个value,但不能一个key对应多个value
* @author Administrator
*
*/
public class Hash_Map {
public static void main(String[] args) {
Map<String, People> q = new HashMap<String, People>();
//添加数据
q.put("one", new People("aaa"));
q.put("two", new People("bbb"));
q.put("three", new People("ccc"));
//取出value值, 返回value类型,这里即People
System.out.println(q.get("two"));
//keyset 返回相应的键值
Set<String> qw = q.keySet();
for (String string : qw) {
System.out.println(q.get(string));
}
Iterator<String> it = qw.iterator();
for (String string : qw) {
System.out.println(q.get(string));
}
}
}