collection

【Java基础】集合

萝らか妹 提交于 2021-02-15 12:30:02
一、Collection接口(超级接口:Iterator) 其下有两个子接口,Set和List。 1)Set接口的两个常用子类 TreeSet:有序存放 HashSet:散列存放 2)List接口(允许重复元素) 常用子类:LinkedList、ArrayList、Vector。ArrayList是List接口最常用的一个子类。LinkedList完成的是一个链表操作。 二、Map接口 实现子类:HashMap、HashTable、TreeMap等 TreeMap与TreeSet类似,TreeMap中元素根据key自动排序。 三、集合元素为自定义类时,集合的排序问题及 输出 自定义类作为集合元素时,集合本身不知道如何排序,必须类实现Comparable接口,并覆写compareTo()方法。 public class Person implements Comparable<Person> { private String name; private int age; public Person(String name, int age) { this.age = age; this.name = name; } @Override public int compareTo(Person o) {//按名字顺序排序 return this.name.compareTo(o.name

Collection集合框架

喜夏-厌秋 提交于 2020-04-07 08:17:20
一,Collection集合框架 在实际开发中,将使用的对象存储到特定数据结构的容器中,而JDK提供了这样的容器——集合框架,集合框架中包含了一系列不同数据结构的实现类。 1)Collection常用方法 ①int size():返回包含对象的个数, ②boolean isEmpty():返回是否为空, ③boolean contains(Object o):判断是否包含某指定对象, ④boolean add(E e) :向集合中添加对象, ⑤boolean remove(Object o):从集合中删除对象。 2)Collection 与Collections的区别? Collection是java.util下的接口,是各种集合的父接口,继承于他的接口有list,set。Collections是java.util下的类,是针对集合的帮助类,提供一系列的静态方法,对各种集合进行检索,排序,线程安全化操作。 二,List集合的实现类:ArrayList和LinkedList List接口是Collection的子接口,用于定义线性表数据结构,元素可以重复,有序的,有索引值。可以将list理解为存储对象的数组,只不过其元素可以动态的增加或减少。 1)List接口有两个实现类:ArrayList和LinkedList。分别用动态数组和链表的方式实现了List接口。List

第十章 Scala 容器基础(二十一):从集合中提取不重复的元素

点点圈 提交于 2020-04-07 06:02:48
Problem 你有一个集合,内部有很多重复元素,你想要把这些重复的元素只保留一份。 Solution 使用Distinct方法: scala> val x = Vector(1, 1, 2, 3, 3, 4) x: scala.collection.immutable.Vector[Int] = Vector(1, 1, 2, 3, 3, 4) scala> val y = x.distinct y: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3, 4) 这个distinct方法返回一个新的集合,重复元素只保留一份。记得使用一个新的变量来指向这个新的集合,无论你使用的是mutable集合还是immutable集合。 如果你突然需要一个set,那么直接吧你的集合转化成为一个set也是去掉重复元素的方式: scala> val s = x.toSet s: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 4) 因为Set对于一样的元素只能保存一份,所以把Array,List,Vector或者其他的集合转化成Set可以去掉重复元素。实际上这就是distinct方法的工作远离。Distinct方法的源代码显示了他就是实用了一个mutable.HashSet的实例。

集合之 Collection

孤者浪人 提交于 2020-04-06 13:00:59
1、Java 中的 Collection(实际是一个接口) 集合继承了 Iterable 接口,所以里面有 Iterator 方法。 2、Collection 集合的一些常用方法: ***************************************************** boolean add(E e); 泛型写法 boolean add(Object e); // 添加元素 ***************************************************** int size(); // 获取集合中元素的个数 ***************************************************** void clear(); // 清空集合 ***************************************************** boolean contains(Object o); // 判断集合是否包含元素 o // 底层调用了 equals 方法 ***************************************************** boolean remove(Object o); // 删除集合元素 o ************************************

Collections工具类

谁说胖子不能爱 提交于 2020-03-29 03:20:41
操作Collection以及Map的工具类: Collections package com.aff.coll; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import org.junit.Test; //操作Collection以及Map的工具类: Collections public class TestCollections { /* reverse(List ); 反转List中元素的顺序 suffle(List ); 对List集合中的元素进行随机排序 sort (List ); 根据元素的自然顺序对指定List集合元素按升序排序 sort(List,Comparator);根据指定Comparator产生的顺序对List集合元素进行排序 swap(List,int ,int );将指定List集合中的 i 处元素和 j 处元素进行交换 Object min(Collection)根据元素的自然顺序,返回给定集合中的最大元素 int frequency(Collection,Object),返回指定集合中指定元素的出现次数 void copy

集合类操作优化经验总结(三)

瘦欲@ 提交于 2020-03-24 16:36:01
3 月,跳不动了?>>> 集合类实践 ArrayList、Vector、LinkedList 均来自 AbstractList 的实现,而 AbstractList 直接实现了 List 接口,并扩展自 AbstarctCollection。ArrayList 和 Vector 使用了数组实现,ArrayList 没有对任何一个方法提供线程同步,因此不是线程安全的,Vector 中绝大部分方法都做了线程同步,是一种线程安全的实现。LinkedList 使用了循环双向链表数据结构,由一系列表项连接而成,一个表项总是包含 3 个部分,元素内容、前驱表项和后驱表项。 当 ArrayList 对容量的需求超过当前数组的大小时,需要进行扩容。扩容过程中,会进行大量的数组复制操作,而数组复制时,最终将调用 System.arraycopy() 方法。LinkedList 由于使用了链表的结构,因此不需要维护容量的大小,然而每次的元素增加都需要新建一个 Entry 对象,并进行更多的赋值操作,在频繁的系统调用下,对性能会产生一定的影响,在不间断地生成新的对象还是占用了一定的资源。而因为数组的连续性,因此总是 在尾端增加元素时,只有在空间不足时才产生数组扩容和数组复制。 ArrayList 是基于数组实现的,而数组是一块连续的内存空间,如果在数组的任意位置插入元素

集合系列

梦想与她 提交于 2020-03-18 01:26:48
某厂面试归来,发现自己落伍了!>>> 1、关于集合的两道面试题 先来看几道题目: 1、创建一个不可变的的集合: public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Java"); set.add("JEE"); set.add("Spring"); set.add("Hibernate"); set = Collections.unmodifiableSet(set); set.add("Ajax"); // not allowed. } 可以看到,创建不可变集合主要是调用了Collections的unmodifiableSet()方法,而Collections类通过装饰模式实现了对一般集合的封装。 2、去除List集合中的重复元素,且保持原有的顺序 public static void main(String args[]) { List<String> list=new ArrayList(); list.add("A"); list.add("B"); list.add("C"); list.add("A"); // List中允许元素重复 for(int i=0;i<list.size();i++) System.out.print(" "

集合类操作优化经验总结(二)

…衆ロ難τιáo~ 提交于 2020-03-06 18:20:54
集合类介绍 LinkedList 类 LinkedList 实现了 List 接口,允许 Null 元素。此外 LinkedList 提供额外的 Get、Remove、Insert 等方法在 LinkedList 的首部或尾部操作数据。这些操作使得 LinkedList 可被用作堆栈(Stack)、队列(Queue)或双向队列(Deque)。请注意 LinkedList 没有同步方法,它不是线程同步的,即如果多个线程同时访问一个 List,则必须自己实现访问同步。一种解决方法是在创建 List 时构造一个同步的 List,方法如 List list = Collections.synchronizedList(new LinkedList(...)); ArrayList 类 ArrayList 实现了可变大小的数组。它允许所有元素,包括 Null。Size、IsEmpty、Get、Set 等方法的运行时间为常数,但是 Add 方法开销为分摊的常数,添加 N 个元素需要 O(N) 的时间,其他的方法运行时间为线性。 每 个 ArrayList 实例都有一个容量(Capacity),用于存储元素的数组的大小,这个容量可随着不断添加新元素而自动增加。当需要插入大量元素时,在插入前可以调用 ensureCapacity 方法来增加 ArrayList 的容量以提高插入效率。和

集合类操作优化经验总结(一)

*爱你&永不变心* 提交于 2020-03-06 18:08:16
本文首先针对 Java 集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括 LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解,同时重点介绍 WeakHashMap。希望通过本文介绍,可以让读者对集合的操作方式、注意事项等有一些了解。 在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行 Java 开发时,JDK 已经为我们提供了一系列相应的类来实现基本的数据结构,所有类都在 java.util 这个包里,清单 1 描述了集合类的关系。 清单 1.集合类之间关系 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap 本文讲的就是集合框架的使用经验总结,注意,本文所有代码基于 JDK7。 集合接口 Collection 接口 Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素(Elements)