java中集合的特点
来源:互联网 发布:手机收银软件好用吗 编辑:程序博客网 时间:2024/05/22 12:59
java中集合的特点
集合的关系图
/** * 集合的特点 * 1.用于存储对象的容器 * 2.集合的长度 是可变 的 * 3.集合中不可以存储 基本数据类型值 * * 集合容器因为内部的数据结构不同,有多种具体容器,不断向上抽取,就形成了集合框架 * 框架的顶层Collection接口 * * Collection的常见方法 * * 1.添加 * boolean add(E e) 确保此 collection 包含指定的元素(可选操作)。 * boolean addAll(Collection c) * 2.删除 * boolean remove() * boolean removeAll() * 3.判断 * boolean contains() * boolean containsAll() * boolean isEmpty():判断集合中是否有元素 * 4.获取 * int size():返回此Collection中的元素数 * Iterator iterator:取出元素的方式 :迭代器 * 该对象必须依赖于具体的容器,因为每一个容器的数据结构都 不同 * 所以该迭代器对象 是在容器中进行内部实现的 * 对于使用容器者而言,具体的实现不重要,只要通过窗口获取到该实现的迭代器对象即可 * 也就是iterator()方法 * 5.其它 * boolean retainAll():取交集 将两个集合中的相同元素从调用removeAll的集合中移除 * Object[] toArray():将集合转成数组 * * * ----------------------------------- * Collection * 两个最重要的子类 * 1.List:有序(存入和取出的顺序一致),元素都 有索引,元素可以重复 * 2.Set:元素不能重复,无序。 * * List:特有的常见方法,有一个共性特点就是都可以操作角标 * 1.添加 * boolean add(int index, E element)在列表的指定位置插入指定元素(可选操作)。 * 2.删除 * boolean remove(Object o)从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。 * 3.修改 * Object set(index,element) * 4.获取 * Object get(index) * int indexOf(object) * int lastIndexOf(object) * List subList(int fromIndex, int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 * * List集合是可以完成对元素的增删改查的 * * List: * ---Vector:内部是数组数据结构,是同步的(线程安全)。增删,查询都很慢。 * ---ArrayList:内部是数组结构,是不同步的。替代Vector.查询的速度快。 * ---LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。 * * LinkedList: * addFirst(); * addLast(); * * getFirst();//获取但不移除,如果链表为空,抛出异常NoSuchElementException * getLast(); * jdk1.6以后 * pollFirst();//获取但不移除,如果链表为空 ,返回null; * pollLast();// * */
//Collection的demo
public class CollectionDemo { public static void main(String[]args){ Collection collection = new ArrayList(); show(collection); } private static void show(Collection collection) { collection.add("aaa"); collection.add("bbb"); collection.add("ccc"); collection.add("ddd"); System.out.println(collection); }}
//IteratorDemo
public class IteratorDemo { public static void main(String[]args){ Collection collection = new ArrayList(); collection.add("aaa"); collection.add("bbb"); collection.add("ccc"); collection.add("ddd"); //使用了Collection中的iterator()方法。调用 集合中的迭代器,是为了获取集合中的迭代器对象 //用法一 Iterator iterator = collection.iterator();// while (iterator.hasNext()){// System.out.println(iterator.next());// } //用法二 for (Iterator iterator1 = collection.iterator();iterator1.hasNext();){ System.out.println(iterator1.next()); } }}
//ListDemo
public class ListDemo{ public static void main(String[]args){ List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("eee"); System.out.println(list); //插入元素// list.add(1,"fff");// System.out.println(list); //删除元素// System.out.println(list.remove(1)); //修改元素// System.out.println(list.set(3,"iii")); //获取元素// System.out.println(list.get(4)); //获取子元素 System.out.println(list.subList(2,4)); System.out.println(list); }
//ListDemo2
public class ListDemo2 { public static void main(String[]args){ List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("eee"); System.out.println(list); ListIterator listIterator = list.listIterator(); //它可以实现在迭代过程 中完成 对元素的增删改查 //注意,只有list列表具备些功能 while (listIterator.hasNext()){ Object ob = listIterator.next(); if (ob.equals("bbb")){ listIterator.add("ggg"); } } System.out.println(list); while (listIterator.hasPrevious()){ System.out.println(listIterator.previous()); } System.out.println(list);/* Iterator iterator=list.iterator(); while (iterator.hasNext()){ //如果这样写,会报错,在迭代过程中,不要使用集合操作元素,容易抛出异常 //java.util.ConcurrentModificationException //当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常 //可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作 Object ob = iterator.next(); if (ob.equals("bbb")){ list.add("ggg"); } } System.out.println(list); */ }}
//VectorDemo
public class VectorDemo { public static void main(String[]args){ Vector vector = new Vector(); vector.addElement("aaa"); vector.addElement("bbb"); vector.addElement("ccc"); Enumeration enumeration = vector.elements(); while (enumeration.hasMoreElements()){ System.out.println(enumeration.nextElement()); } }}
//LinkListDemo
/** * 请使用LinkedList来模拟一个堆栈或者队列数据结构 * <p> * 堆栈: * 栈的特点:先进后出 * <p> * 队列:先进先出 */class DuiLie { private LinkedList list; public DuiLie() { list = new LinkedList(); } public void add(Object o) { list.addLast(o); } public Object getList() { return list.removeFirst(); } public boolean isEmpty() { return list.isEmpty(); }}public class LinkedListTest { public static void main(String[] args) { DuiLie duiLie = new DuiLie(); duiLie.add("aaa"); duiLie.add("bbb"); duiLie.add("ccc"); duiLie.add("ddd"); while (!duiLie.isEmpty()) { System.out.println(duiLie.getList()); } }}
//利用arrayList去除集合中的重复元素
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int hashCode() {//判断hash值是否相同// System.out.println(this+"......hashcode..."); return name.hashCode() + age; } @Override public boolean equals(Object obj) {//判断内容是否相同 if (this == obj) { return true; } if (!(obj instanceof Person)) { throw new ClassCastException("类型转换错误"); }// System.out.println(this + "......equals...." + obj); Person person = (Person) obj; return this.name.equals(person.name) && this.age == person.age; } @Override public String toString() { return name+":"+age; }}
public class ArrayListTest { public static void main(String[] args){ test(); test2(); } //存自定义对象 //注意://arrayList判断元素是否相同 remove(),contains(),的依据是equals()方法, //HashSet的依据是hashCode()和equals()方法,该元素是否有和该容器中的元素相同 //所以对于自定义对象,一定要重写equals()方法, private static void test2() { ArrayList arrayList = new ArrayList(); arrayList.add(new Person("aaa", 10)); arrayList.add(new Person("bbb", 20)); arrayList.add(new Person("ccc", 30)); arrayList.add(new Person("bbb", 20)); arrayList.add(new Person("ccc", 30)); System.out.println(arrayList); arrayList = singletest(arrayList); System.out.println(arrayList); } //存字符串 private static void test() { ArrayList arrayList = new ArrayList(); arrayList.add("aaa"); arrayList.add("bbb"); arrayList.add("ccc"); arrayList.add("ccc"); arrayList.add("ddd"); arrayList.add("ddd"); arrayList.add("ddd"); System.out.println(arrayList); arrayList = singletest(arrayList); System.out.println(arrayList); } public static ArrayList singletest(ArrayList list){ //1,定义一个集合的迭代器 Iterator iterator = list.iterator(); //2,创建一个新的list集合 ArrayList arrayList1 = new ArrayList(); //3,迭代list集合 while (iterator.hasNext()){ //4.定义 一个对象接收集合中的元素 Object object = iterator.next(); //5.判断新集合中是否有相同的元素,如果没有,则存进新的集合 if (!arrayList1.contains(object)){ arrayList1.add(object); } } return arrayList1; }}
/** * 集合的特点 * 1.用于存储对象的容器 * 2.集合的长度 是可变 的 * 3.集合中不可以存储 基本数据类型值 * * 集合容器因为内部的数据结构不同,有多种具体容器,不断向上抽取,就形成了集合框架 * 框架的顶层Collection接口 * * Collection的常见方法 * * 1.添加 * boolean add(E e) 确保此 collection 包含指定的元素(可选操作)。 * boolean addAll(Collection c) * 2.删除 * boolean remove() * boolean removeAll() * 3.判断 * boolean contains() * boolean containsAll() * boolean isEmpty():判断集合中是否有元素 * 4.获取 * int size():返回此Collection中的元素数 * Iterator iterator:取出元素的方式 :迭代器 * 该对象必须依赖于具体的容器,因为每一个容器的数据结构都 不同 * 所以该迭代器对象 是在容器中进行内部实现的 * 对于使用容器者而言,具体的实现不重要,只要通过窗口获取到该实现的迭代器对象即可 * 也就是iterator()方法 * 5.其它 * boolean retainAll():取交集 将两个集合中的相同元素从调用removeAll的集合中移除 * Object[] toArray():将集合转成数组 * * * ----------------------------------- * Collection * 两个最重要的子类 * 1.List:有序(存入和取出的顺序一致),元素都 有索引,元素可以重复 * 2.Set:元素不能重复,无序。 * * List:特有的常见方法,有一个共性特点就是都可以操作角标 * 1.添加 * boolean add(int index, E element)在列表的指定位置插入指定元素(可选操作)。 * 2.删除 * boolean remove(Object o)从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。 * 3.修改 * Object set(index,element) * 4.获取 * Object get(index) * int indexOf(object) * int lastIndexOf(object) * List subList(int fromIndex, int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 * * List集合是可以完成对元素的增删改查的 * * List: * ---Vector:内部是数组数据结构,是同步的(线程安全)。增删,查询都很慢。 * ---ArrayList:内部是数组结构,是不同步的。替代Vector.查询的速度快。 * ---LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。 * * LinkedList: * addFirst(); * addLast(); * * getFirst();//获取但不移除,如果链表为空,抛出异常NoSuchElementException * getLast(); * jdk1.6以后 * pollFirst();//获取但不移除,如果链表为空 ,返回null; * pollLast();// * */
//Collection的demo
public class CollectionDemo { public static void main(String[]args){ Collection collection = new ArrayList(); show(collection); } private static void show(Collection collection) { collection.add("aaa"); collection.add("bbb"); collection.add("ccc"); collection.add("ddd"); System.out.println(collection); }}
//IteratorDemo
public class IteratorDemo { public static void main(String[]args){ Collection collection = new ArrayList(); collection.add("aaa"); collection.add("bbb"); collection.add("ccc"); collection.add("ddd"); //使用了Collection中的iterator()方法。调用 集合中的迭代器,是为了获取集合中的迭代器对象 //用法一 Iterator iterator = collection.iterator();// while (iterator.hasNext()){// System.out.println(iterator.next());// } //用法二 for (Iterator iterator1 = collection.iterator();iterator1.hasNext();){ System.out.println(iterator1.next()); } }}//ListDemo
public class ListDemo{ public static void main(String[]args){ List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("eee"); System.out.println(list); //插入元素// list.add(1,"fff");// System.out.println(list); //删除元素// System.out.println(list.remove(1)); //修改元素// System.out.println(list.set(3,"iii")); //获取元素// System.out.println(list.get(4)); //获取子元素 System.out.println(list.subList(2,4)); System.out.println(list); }//ListDemo2
public class ListDemo2 { public static void main(String[]args){ List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("eee"); System.out.println(list); ListIterator listIterator = list.listIterator(); //它可以实现在迭代过程 中完成 对元素的增删改查 //注意,只有list列表具备些功能 while (listIterator.hasNext()){ Object ob = listIterator.next(); if (ob.equals("bbb")){ listIterator.add("ggg"); } } System.out.println(list); while (listIterator.hasPrevious()){ System.out.println(listIterator.previous()); } System.out.println(list);/* Iterator iterator=list.iterator(); while (iterator.hasNext()){ //如果这样写,会报错,在迭代过程中,不要使用集合操作元素,容易抛出异常 //java.util.ConcurrentModificationException //当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常 //可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作 Object ob = iterator.next(); if (ob.equals("bbb")){ list.add("ggg"); } } System.out.println(list); */ }}//VectorDemopublic class VectorDemo { public static void main(String[]args){ Vector vector = new Vector(); vector.addElement("aaa"); vector.addElement("bbb"); vector.addElement("ccc"); Enumeration enumeration = vector.elements(); while (enumeration.hasMoreElements()){ System.out.println(enumeration.nextElement()); } }}//LinkListDemo
/** * 请使用LinkedList来模拟一个堆栈或者队列数据结构 * <p> * 堆栈: * 栈的特点:先进后出 * <p> * 队列:先进先出 */class DuiLie { private LinkedList list; public DuiLie() { list = new LinkedList(); } public void add(Object o) { list.addLast(o); } public Object getList() { return list.removeFirst(); } public boolean isEmpty() { return list.isEmpty(); }}public class LinkedListTest { public static void main(String[] args) { DuiLie duiLie = new DuiLie(); duiLie.add("aaa"); duiLie.add("bbb"); duiLie.add("ccc"); duiLie.add("ddd"); while (!duiLie.isEmpty()) { System.out.println(duiLie.getList()); } }}
//利用arrayList去除集合中的重复元素public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int hashCode() {//判断hash值是否相同// System.out.println(this+"......hashcode..."); return name.hashCode() + age; } @Override public boolean equals(Object obj) {//判断内容是否相同 if (this == obj) { return true; } if (!(obj instanceof Person)) { throw new ClassCastException("类型转换错误"); }// System.out.println(this + "......equals...." + obj); Person person = (Person) obj; return this.name.equals(person.name) && this.age == person.age; } @Override public String toString() { return name+":"+age; }}public class ArrayListTest { public static void main(String[] args){ test(); test2(); } //存自定义对象 //注意://arrayList判断元素是否相同 remove(),contains(),的依据是equals()方法, //HashSet的依据是hashCode()和equals()方法,该元素是否有和该容器中的元素相同 //所以对于自定义对象,一定要重写equals()方法, private static void test2() { ArrayList arrayList = new ArrayList(); arrayList.add(new Person("aaa", 10)); arrayList.add(new Person("bbb", 20)); arrayList.add(new Person("ccc", 30)); arrayList.add(new Person("bbb", 20)); arrayList.add(new Person("ccc", 30)); System.out.println(arrayList); arrayList = singletest(arrayList); System.out.println(arrayList); } //存字符串 private static void test() { ArrayList arrayList = new ArrayList(); arrayList.add("aaa"); arrayList.add("bbb"); arrayList.add("ccc"); arrayList.add("ccc"); arrayList.add("ddd"); arrayList.add("ddd"); arrayList.add("ddd"); System.out.println(arrayList); arrayList = singletest(arrayList); System.out.println(arrayList); } public static ArrayList singletest(ArrayList list){ //1,定义一个集合的迭代器 Iterator iterator = list.iterator(); //2,创建一个新的list集合 ArrayList arrayList1 = new ArrayList(); //3,迭代list集合 while (iterator.hasNext()){ //4.定义 一个对象接收集合中的元素 Object object = iterator.next(); //5.判断新集合中是否有相同的元素,如果没有,则存进新的集合 if (!arrayList1.contains(object)){ arrayList1.add(object); } } return arrayList1; }}
阅读全文
0 0
- java中集合的特点
- java中集合的知识点
- java中集合的遍历
- java中集合的总结
- java中集合的分类
- Java中集合的讲解
- java中集合的总结
- java中集合的概念
- java中集合类的总结
- java中集合的选择 初学者必备
- JAVA中集合的排序方法
- Java中集合和数组的区别
- java中集合与数组的区别
- 关于java中集合类的理解
- Java中集合类的对比总结
- java中集合类的用法详解
- Java中集合类的介绍
- Java中集合类的区别
- 输入*号打印出图形
- 了解HTTP和Https以及计算机网络中的一些基本知识
- 删数问题
- 牛顿迭代法
- python_file
- java中集合的特点
- linux下安装jdk8
- 11月20日笔记
- C语言小笔记(3)
- LCD(一) TFT液晶时序图
- 用深度学习(CNN RNN Attention)解决大规模文本分类问题
- ROS常见问题2——用KDevelop编译ROS程序
- IT技术的增长造成人类进步的假象?
- 高级算法/数据结构 模板