java
public class LinklistDemo {
public static void main(String[] args) {
LinkedList linkedList=new LinkedList();
linkedList.add(1);
linkedList.add("ssss");
linkedList.add(false);
System.out.println(linkedList);
System.out.println( linkedList.getFirst());
linkedList.add(0,"10086");
System.out.println(linkedList);
linkedList.remove(0);
System.out.println(linkedList);
linkedList.set(1,"10086");//gai
System.out.println(linkedList);
System.out.println(linkedList.get(1));
}
1、Vector也是List接口的一个子类实现
2、Vector跟ArrayList一样,底层都是使用数组进行实现的
3、面试经常问区别:
(1)ArrayList是线程不安全的,效率高,Vector是线程安全的效棒
低
(2)ArrayList在进行扩容的时候,是扩容1.5倍,Vector扩容的时候扩容原来的2倍
java
package ContainerDemo1;
import java.util.Vector;
public class VatorDemo {
public static void main(String[] args) {
Vector vector = new Vector();
vector.add(111);
vector.add("大王");
vector.add(false);
System.out.println(vector);
}
}
所有的集合类都默认实现了Iterable的接口,实现此接口意味着具备了增强for循环的能力
增强for循环本质上使用的也是iterator的功能
方法:
iterator
foreach
在iterator的方法中,要求返回一个Iterator的接口实例对象
此接口中包含了
hasNext
next
在使用iterator进行迭代的过程中如果删除其中的某个元素会报错,并发操作异常,因此
如果遍历的同时需要修改元素,建议使用listIterator(),
ListIterator迭代器提供了向前和向后两种遍历的方式
始终是通过cursor和lastret的指针来获取元素值及向下的过遍历索引
当使用向前遍历的时候必须要保证指针在选代器的结果,否则无法获取结果
java
public class IteratorDemo {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add(55);
list.add("xiao");
list.add(true);
System.out.println(list);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
// Iterator iterator=list.iterator();
// while(iterator.hasNext()){
// System.out.println(iterator.next());
// }
for (Object i: list){
// System.out.println(i);
// }
java
ListIterator listIterator = list.listIterator();
while(listIterator.hasNext()){
Object next = listIterator.next();
if(next.equals(1)){
list.remove(next);
}
System.out.println(list);
}
while (listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
java
package ContainerDemo1;
import java.util.Objects;
public class Dog {
private String name;
private String color;
public Dog(){
}
public Dog(String name,String color){
this.name=name;
this.color=color;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setColor(String color)
{ this.color=color;}
public String getColor(){
return color;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", color='" + color + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Dog dog = (Dog) o;
return Objects.equals(name, dog.name) && Objects.equals(color, dog.color);
}
@Override
public int hashCode() {
return Objects.hash(name, color);
}
}
package ContainerDemo1;
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main(String[] args) {
List list=new ArrayList();
Dog d1=new Dog("大黄","red");
Dog d2=new Dog("大白","blue");
Dog d3=new Dog("大黑","green");
list.add(d1);
list.add(d2);
list.add(d3);
System.out.println(list);
System.out.println(list.size());
list.remove(d1);
System.out.println(list);
System.out.println(list.contains(d2));
Dog d4=new Dog("小明","block");
System.out.println(list.contains(d4));
}
}
1、set中存放的是无序,唯一的数据
2、set不可以通过下标获取对应位置的元素的值,因为无序的特点
java
package ContainerDemo1;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class SetDemo {
public static void main(String[] args) {
Set set = new HashSet();
set.add("233");
set.add(false);
set.add(4);
System.out.println(set);
Iterator iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
System.out.println("--------");
// for(Iterator iter=set.iterator() : iter.hasNext()){
//
// }
TreeSet treeSet=new TreeSet();
treeSet.add(55);
treeSet.add(14);
treeSet.add(59);
System.out.println(treeSet);
}
}