List,linkedlist,HashSet
list
list的四种特定方法
1.add(int index, E element)
将指定的元素插入此列表中的指定位置(可选操作)。
2.get(int index)
返回此列表中指定位置的元素。
3.remove(int index)
删除该列表中指定位置的元素(可选操作)
4.set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。
list特点:
有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
与集合不同,列表通常允许重复的元素。
代码:
public class Demo01List {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("恶贯满盈");
list.add("无恶不作");
list.add("凶神恶煞");
//list.add("穷凶极恶");
//1.add(int index, E element)
//将指定的元素插入此列表中的指定位置(可选操作)。
list.add(3,"穷凶极恶");
list.add("四大恶人");
System.out.println(list);//[恶贯满盈, 无恶不作, 凶神恶煞, 穷凶极恶, 四大恶人]
//2.get(int index)
//返回此列表中指定位置的元素。
String s = list.get(1);
System.out.println(s);//无恶不作
//3.remove(int index)
//删除该列表中指定位置的元素(可选操作)
String remove = list.remove(4);
System.out.println(remove);
System.out.println(list);
//4.set(int index, E element)
//用指定的元素(可选操作)替换此列表中指定位置的元素。
String set = list.set(0, "无恶不作,段延庆");
System.out.println(set);
System.out.println(list);
//list遍历的三种方式:
//1.foreach
for (String str:
list) {System.out.println(str);
}
//使用迭代器
System.out.println("====================================================");
Iterator<String> it = list.iterator();
while (it.hasNext())
System.out.println(it.next());
//普通for循环
System.out.println("====================================================");
for (int i = 0; i < list.size(); i++) {
String s1 = list.get(i);
System.out.println(s1);
}
String s2 = list.get(5);
System.out.println(s2);//Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 4越界异常!
}
}
// 显示效果上面已给出
LinkedList
继承list接口
特点是查询慢,增删快,里面含有大量操作首尾元素的方法。
注意:使用linkedlist集合特有的方法,不能使用多态。
方法下面代码有介绍:
代码:
public class Demo02LinkedList {
public static void main(String[] args) {
//show01();
//show02();
show03();
}
private static void show03() {
//移除元素
LinkedList<String> linked = new LinkedList<>();
linked.add("武侠小说:");
linked.add("金庸小说:");
linked.add("天龙八部");
linked.add("射雕英雄传");
linked.add("神雕侠侣");
System.out.println("移除前的linkedlist"+linked);
//removeFirst()
//从此列表中删除并返回第一个元素。
String first = linked.removeFirst();
System.out.println("移除的首元素为:"+first);
//removeLast()
//从此列表中删除并返回最后一个元素。
String last = linked.removeLast();
System.out.println("移除的尾元素为:"+last);
//pop()
//从此列表表示的堆栈中弹出一个元素。
String pop = linked.pop();//相当于removeFirst
System.out.println("移除的首元素为:"+pop);
System.out.println("移除后的linkedlist"+linked);
}
private static void show02() {
//查看元素
LinkedList<String> linked = new LinkedList<>();
linked.add("武侠小说:");
linked.add("金庸小说:");
linked.add("天龙八部");
linked.add("射雕英雄传");
linked.add("神雕侠侣");
//linked.clear();清空
if(!linked.isEmpty())
{
//getFirst()
//返回此列表中的第一个元素。
String first = linked.getFirst();//没有元素异常,加限制!
System.out.println(first);
//getLast()
//返回此列表中的最后一个元素
String last = linked.getLast();
System.out.println(last);
}
System.out.println(linked);
}
private static void show01() {
//增加元素
LinkedList<String> linked = new LinkedList<>();
linked.add("武侠小说:");
linked.add("金庸小说:");
linked.add("天龙八部");
linked.add("射雕英雄传");
linked.add("神雕侠侣");
System.out.println(linked);
//addFirst(E e)
//在该列表开头插入指定的元素
linked.addFirst("小说:");
//addLast(E e)
//将指定的元素追加到此列表的末尾。
linked.addLast("倚天屠龙记");
//push(E e)
//将元素推送到由此列表表示的堆栈上。相当于:addFirst(E e)
linked.push("中国");
System.out.println(linked);
}
}
显示效果
移除前的linkedlist[武侠小说:, 金庸小说:, 天龙八部, 射雕英雄传, 神雕侠侣]
移除的首元素为:武侠小说:
移除的尾元素为:神雕侠侣
移除的首元素为:金庸小说:
移除后的linkedlist[天龙八部, 射雕英雄传]
HashSet
set接口
特点:不包含重复元素的集合。 没有索引,没有带索引的方法,也不能使用普通的for循环遍历
HashSet集合implements Set接口
1.不允许重复存储的元素
2.没有索引,同set
3.是一个无序集合,存储和取出可能不一致
4.底层是一个哈希表结构
代码:
public class Demo03HashSet {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(3);
set.add(5);
set.add(7);
set.add(9);
set.add(2);
set.add(4);
set.add(6);
set.add(8);
set.add(10);
set.add(1);
set.add(3);
set.add(5);
Iterator<Integer> it = set.iterator();
while (it.hasNext())
System.out.println(it.next());
System.out.println("------------------------------");
for (Integer in:set
) {
System.out.println(in);
}
}
}
显示效果
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
jdk1.9新特性