@liruiyi962464
2017-03-21T03:58:14.000000Z
字数 4725
阅读 545
java
- List:元素是有序的(怎么存的就怎么取出来,顺序不会乱)。元素可以重复。(角标1上有个3,角标2上也可以有个3)因为该集合
体系有索引- ArrayList:底层的数据使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删很慢)线程不同步
- LinkedList:底层的数据结构是链表结构(特点是查询较慢,但增删较快)
- ArrayList LinkedList三种方式都能使用
- HashSet TreeSet没有办法使用for,foreach循环的底层是有迭代器实现的,能用迭代器遍历就能用foreach
- 凡是能用foreac遍历的都能用迭代器遍历
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
//直接输出
System.out.println(arrayList.arrayList(i));
// foreach
for (String string : arrayList) {
System.out.println(string);
}
// get()和size()
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
// 迭代器 (Iterator)
//(hasNext:是否有数据存在)(next:迭代输出)
System.out.println("迭代器遍历");
Iterator<String> iterator = arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//迭代器(for)
for (Iterator iterator = arratList.iterator(); iterator.hasNext();) {
System.out.println(iterator.next());
}
- 大小可变,有序,可重复。
- 实现了List接口
- 动态数组
- ArrayList:底层的数据使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删很慢)线程不同步
- ArrayList arrayList = new ArrayList(); //规定类型
(hasNext:是否有数据存在)(next:迭代输出)
System.out.println("迭代器遍历");
Iterator<String> iterator = arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
// 集合
ArrayList arrayList = new ArrayList<>();
// 添加数据 1.Integer 2.Boolean
// 可以添加重复数据 有序
arrayList.add(1);
arrayList.add(true);
arrayList.add("边铂超");
arrayList.add("边铂超1");
arrayList.add(3.141592653579);
System.out.println("第一次输出:" + arrayList);
System.out.println(arrayList.addAll(arrayList)+"第二次输出:" + arrayList);
// 按照指定位置插入(add)
arrayList.add(1, "我是新插入的");
System.out.println("第一次插入后输出:" + arrayList);
// 查询下标对应的元素(get)
System.out.println("此下标对应的元素为" + arrayList.get(2));
// 查询越界 报错
System.out.println(arrayList.get(6));
// 返回arrayList首次出现的指定元素的下标,如果指定的元素不存在,返回-1(indexOf)
System.out.println("指定元素是否存在:" + arrayList.indexOf("1"));
//返回arrayList最后出现的指定元素的下标,如果指定的元素不存在,返回-1(lastIndexOf)
System.out.println("指定元素是否存在:" + arrayList.lastIndexOf("1"));
// 是否有指定元素,有返回true,没有则为false(contains)
System.out.println("指定元素是否有:" + arrayList.contains(90));
// 判断是否为空 空返回true,没有则为false(isEmpty)
System.out.println("指定元素是否为空:" + arrayList.isEmpty());
// 删除指定下标的元素,并且返回删除的元素(remove)
System.out.println("根据指定下标删除:" + arrayList.remove(3) + "--后为:" + arrayList);
// 删除指定元素,有返回true,没有则为false(remove) 无法删除整形,会认为整形变量为下标
System.out.println(arrayList.remove("根据指定下标删除:" + 3.141592653579) + "--后为:" + arrayList);
//根据下标指定位置替换 返回替换的元素(set)
System.out.println("根据下标换完之后:"+arrayList.set(3, "我是换来的")+arrayList);
//返回元素个数(size)
System.out.println("元素个数为:"+arrayList.size());
//按照顺序打印(toArray)
Object[] bobjs = arrayList.toArray();
for (Object object : bobjs) {
System.out.println(object);
}
// 移除所有的元素(clear)
arrayList.clear();
System.out.println("删除hou:" + arrayList);
- 链表
- 底层的数据结构是链表结构(特点是查询较慢,但增删较快)
- 提供了一个链表数据结构
//栈:先进后出,有一个口
addFirst();removeFirst();
addLast();removeLast();
//队列:先进先出,有两个口
addFirst();removeLast();
addLast();removeFirst();
LinkedList<String> linkedList = new LinkedList<String>();
linkedList.addFirst("1");
linkedList.addFirst("2");
linkedList.addFirst("3");
linkedList.addFirst("4");
linkedList.addLast("我是最后传传进去的");//元素添加到此列表的结尾
/*4321*/
System.out.println(linkedList);
//元素添加到此列表的结尾
System.out.println(linkedList.addAll(linkedList)+"第二次输出:" + linkedList);
linkedList.removeFirst();//删除第一个
linkedList.removeLast();//删除最后一个
System.out.println(linkedList);
//如果此列表包含指定元素,则返回 true。
System.out.println(linkedList.contains("2"));
//返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
Iterator<String> it = linkedList.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//获取但不移除此列表的头(第一个元素)。
System.out.println(linkedList.element());
//返回此列表中指定位置处的元素。
System.out.println(linkedList.get(3));
//返回此列表的第一个元素/最后
System.out.println(linkedList.getFirst()+"/"+linkedList.getLast());
//返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
System.out.println(linkedList.indexOf("3"));
//返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
System.out.println(linkedList.lastIndexOf("3"));
//返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。
System.out.println(linkedList.listIterator(0).next());
//将指定元素添加到此列表的开头/末尾
System.out.println(linkedList.offerFirst("添加到开头")+""+linkedList);
System.out.println(linkedList.offerLast("添加到末尾")+""+linkedList);
//获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。最后一个元素
System.out.println(linkedList.peekFirst()+""+linkedList);
System.out.println(linkedList.peekLast()+""+linkedList);
//获取并移除此列表的第一个元素;如果此列表为空,则返回 null。最后一个元素
System.out.println(linkedList.pollFirst()+""+linkedList);
System.out.println(linkedList.pollLast()+""+linkedList);
//从此列表所表示的堆栈处弹出一个元素
System.err.println(linkedList.poll());
//将元素推入此列表所表示的堆栈
linkedList.push("sb");
System.out.println(linkedList);
//将此列表中指定位置的元素替换为指定的元素。
System.err.println(linkedList.set(0, "2b"+""+linkedList));
//返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。
linkedList.toArray();
System.out.println(linkedList);
//删除所有数据
linkedList.clear();
System.err.println(linkedList);