Collection
public static void method1() {
Collection c=new ArrayList();
c.add("aaa");
c.add("bbb");
System.out.println(c.size());
System.out.println(c); // 打印collection的数据结构
c.remove("aaa");
System.out.println(c.size());
System.out.println(c.toString());
// 判断是否为empty(空)
System.out.println(c.isEmpty());
//remove 删除指定元素,
// 如果删除成功返回true,没有对应元素删除失败返回false
System.out.println(c.remove("ccc"));
// 判断是否有某元素
System.out.println(c.contains("aaa"));
}
输出结果
2
[aaa, bbb]
1
[bbb]
false
false
true
public static void method2() {
Collection c=new ArrayList();
c.add("aaa"); //carr[0]="aaa"
c.add("bbb"); // carr[1]="bbb"
c.add("ccc");
//是否包含aaa
System.out.println(c.contains("aaa"));
//没有元素ccc
System.out.println(c.contains("ccc"));
//集合的遍历 foreach 遍历集合
// for(Object s: c) {
// System.out.print(s.toString()+",");
System.out.print(((String)s).toString()+","); //aaa,bbb,ccc,
System.out.print(((String)s).concat(","));
// }
// 集合特有的遍历方法
// 迭代器----》不知道数据类型也可以遍历
// 1.获得迭代器c.iterator()
Iterator i= c.iterator();
// 2.准备循环条件
while(i.hasNext()) { //2.1是否有下一个元素
System.out.print(i.next()+","); //2.2移动指针,指向下一个元素
}
}
public static void method4() {
Collection c=new ArrayList();
c.add("aaa"); //carr[0]="aaa"
c.add("bbb"); // carr[1]="bbb"
c.add("ccc");
c.add("ddd");
Collection c1=new ArrayList();
c1.add("aaa"); //carr[0]="aaa"
c1.add("bbb");
//删除c中 的与c1集合相同的元素
System.out.println(c.removeAll(c1));
//子集
// System.out.println(c.containsAll(c1));
// 1.获得迭代器c.iterator()
Iterator i= c.iterator();
// 2.准备循环条件
while(i.hasNext()) { //2.1是否有下一个元素
System.out.print(i.next()+","); //2.2移动指针,指向下一个元素
}
}
c.removeAll(c1) 删除c中 的与c1集合相同的元素
c.containsAll(c1) 判断是否为子集
c.retainAll(c1) 保留c中与c1中相同的元素
c.contains(“aaa”) c中是否包含aaa
以上 返回值为Boolean
List
List 接口 有序(添加元素的顺序与存放顺序一致),可重复
public static void method5() {
// List 接口 有序(添加元素的顺序与存放顺序一致),可重复
List list=new ArrayList();
list.add("aaa");
list.add("bbb");
list.remove("aaa");
Iterator i=list.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
public static void method6() {
List list=new ArrayList();
list.add("aaa"); //
list.add("bbb"); //
list.add(1, "ccc");//将元素加到指定数组下标位置
Iterator i=list.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
list.add(1, “ccc”) 将元素加到指定数组下标位置,后续元素依次后移
list.get(int index) 获取指定下标元素值
list.indexOf(“ccc”) List里是否有ccc,有就返回元素所在下标(如果有多个的话会返回第一个匹配的元素下标,如果想要返回最后一个匹配的下标,用 List.lastIndexOf() ),如果没有就返回-1
public static void method6() {
List list=new ArrayList();
list.add("aaa"); //
list.add("bbb"); //
list.add(1, "ccc");//将元素加到指定数组下标位置
list.add("aaa");
//获得指定下标元素
System.out.println("list.get(1):"+list.get(1));
//查找是否包含元素 ccc 如果包含返回下标,如果不包含返回-1
System.out.println("list.indexOf(\"aaa\"):"+list.indexOf("aaa"));
System.out.println("list.lastIndexOf(\"aaa\"):"+list.lastIndexOf("aaa"));
// Iterator i=list.iterator();
// while(i.hasNext()) {
// System.out.println(i.next());
// }
ListIterator i= list.listIterator();
while(i.hasNext()) {
System.out.println(i.next());
}
System.out.println("------------从后向前遍历");
while(i.hasPrevious()) {
System.out.println(i.previous());
}
}
ListIterator 比iterator功能要多
适用范围:
listIterator 只能用在List集合中的迭代器
iterator 在collection集合内都可以用
功能 :
listIterator 多了add功能 和反向遍历的功能
从后向前遍历(反向遍历)
i.hasPrevious() + i.previous()
从前向后遍历
i.hacNext()+ i.next()
Linkedlist
public static void method8() {
// ArrayList 查找快,linkedlist 增删快,还添加了增删开头语结尾方法
ArrayList arraylist=new ArrayList();
arraylist.add("aaa");
arraylist.add("bbb");
arraylist.add("ccc");
arraylist.add("ddd");
arraylist.remove(0);
// System.out.println("arraylist.get(0):"+arraylist.get(0));
LinkedList linkedlist=new LinkedList();
linkedlist.add("aaa");
linkedlist.add("bbb");
linkedlist.add("ccc");
linkedlist.add("ddd");
// linkedlist.addFirst(e); //增加到开头
// linkedlist.addLast(e); //增加到结尾
// linkedlist.remove(0);
// linkedlist.removeFirst();//删除第一个元素
// linkedlist.removeLast(); //删除最后一个元素
// System.out.println("linkedlist.get(0):"+linkedlist.get(0));
// linkedlist.remove(); //删除第一个元素
// -------------------------------------------
Iterator iterator= linkedlist.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
ArrayList 查找快,linkedlist 增删快,还添加了增删开头语结尾方法
linkedlist.addFirst(e); 增加到开头
linkedlist.addLast(e); 增加到结尾
linkedlist.removeFirst(); 删除第一个元素
linkedlist.removeLast(); 删除最后一个元素
linkedlist.peek() 查看栈顶
Linkedlist 模拟push压栈 与 pop弹栈 栈内存
public static void method9() {
LinkedList linkedlist=new LinkedList();
// 内存中 输出顺序为 栈顶 《===》|c 《==》 b 《==} a |栈底
linkedlist.push("a");
linkedlist.push("b");
linkedlist.push("c");
// 使用pop弹栈
System.out.println("linkedlist.pop():"+linkedlist.pop());
System.out.println("linkedlist.pop():"+linkedlist.pop());
System.out.println("linkedlist.pop():"+linkedlist.pop());
Iterator iterator= linkedlist.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
内存中 输出顺序为 栈顶 |c b a |栈底
输出结果为:
c
b
a
set集合
public static void method10() {
// Set集合 无序(内存存储结构与加入顺序不同),不可重复
Set set=new TreeSet();
set.add("aaa");
set.add("fff");
set.add("eee");
set.add("bbb");
set.add("ccc");
set.add("ddd"); //0x123
set.add("ddd"); //0x123
set.add("ddd"); //0x123
set.remove("ddd");
Iterator i=set.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
hashset
public static void method12() {
// HashSet 效率高 ,速度快
HashSet<String> hs=new HashSet();
hs.add("aaa");
hs.add("bbb");
hs.add("ccc");
hs.add("ddd");
hs.add("eee");
hs.add("fff");
hs.remove("bbb");
System.out.println(hs.contains("bbb"));
Iterator i=hs.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
treeset
public static void method11() {
TreeSet<String> ts=new TreeSet();
//自然顺序 <------> 红黑树
// 统一数据类型----》钻石修饰符----》泛型 <Integer>
// ts.add(3);
// ts.add(2);
// ts.add(1);
ts.add("aaa");
// ts.add("aab");
// ts.add("eee");
ts.add("bbb");
ts.add("ccc");
ts.add("ddd"); //0x123
ts.add("eee");
// ts.add("ddd"); //0x123
// ts.add("ddd"); //0x123
ts.remove("ddd");
Iterator i=ts.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
如果不通过泛型给出初始类型(统一数据类型),则会将添加进的第一个元素的类型默认为集合内所有元素的类型,添加别的类型的数据时会报错