arraylist

hasSet,TreeSet,ArrayList,LinkedList,Vector,HashMap,HashTable,TreeMap利用Iterator进行输出

旧时模样 提交于 2020-03-14 11:52:39
基础类,没有重写hashCode()和equals()方法: package niukewang; import java.util.Objects; public class setClass { String a; String b; public setClass(String a, String b) { this.a=a; this.b=b; } } 测试类: package niukewang; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; import java.util.Vector; public class test1 { public static void main(String args[]

Set ,List,ArrayList,LinkedList,Vectory,HashMap,Hashtable,HashSet,TreeSet,TreeSet

邮差的信 提交于 2020-03-14 11:52:24
Set与List区别:   两者都是接口,并继承Collection接口;List有序,允许重复;Set无序,不能重复; ArrayList与LinkList与Vector区别:    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便于插入和增加元素,它们都允许按序号索引元素,但是插入会涉及到数据元素移动等内存操作,所以索引数据快而插入慢,Vector由于使用了Synchronized方法(线程安全),通常性能较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入时只需要记录本身前后项就可以,所以插入速度较快。    HashMap与Hashtable区别:      实现Map接口;HashMap是线程异步(ArrayList也是),Hashtable是同步的(Vectory也是),可以使用Collections.synchronizedMap方法实现同步;。HashMap允许空键值对; 来源: https://www.cnblogs.com/IanLan/p/6182241.html

ArrayList,LinkedList,Vector区别.TreeSet,TreeSet,LinkedHashSet区别

流过昼夜 提交于 2020-03-14 11:51:41
ArrayList:   基于数组的数据结构,地址连续,一旦数据保存好了,查询效率比较高,但是因为其地址连续,所以增删数据需要移动数据,影响速度   内部数组长度默认为10,当需要扩容时,数组长度按1.5倍增长(old+(old>>1)),移除时长度-1;数组是被transient修饰,ArrayList通过readObject,writeObject方法实现序列化 LinkedList:   基于双向链表的数据结构,地址是任意的,对于增删比较快,查找比较慢(内部保存了Node类,通过不停的node.next()来比对值) Vector:   基于数组的数据结构,线程安全,方法上加了synchronized。 --------------------------------------------------------------------------------------------------------------------------------------------------------- HashSet:   内部是一个HashMap保存数据(Hash表实现),可以保存null TreeSet:   通过二叉树实现,TreeSet为排序准备的 LinkedHashSet:   根据hashCode排序,同时使用了链表结构(LinkHashMap)

Arraylist 和 linkedlist || hashset 和treeset. || hashMap 和 TreeMap

不问归期 提交于 2020-03-14 11:50:45
参考:http://liuyuan418921673.iteye.com/blog/2256120 1. ArrayList和LinkedList的区别和使用场景 ArryList 与linkedList 都实现了List 接口 ArrayList:实现list接口 采用数组结构保存对象 优点:便于对集合进行快速的随机访问 查询操作效率比较高 缺点:插入和删除操作效率比较低 原因:指定位置索引插入对象时,会同时将此索引位置之后的所有对象相应的向后移动一位。删除会同时向前移动一位。 linkedList:实现list接口 采用链表结构保存对象 优点:插入和删除操作效率比较高 缺点:查询操作效率比较低 原因:链表结构在插入对象时只需要简单的需该链接位置,省去了移动对象的操作 在查询上LinkedList只能从链表的一端移动到另一端故效率较低 使用场景: ArrayList使用场景:一般顺序遍历情况下使用ArrayList 尽量不对ArrayList进行插入或删除操作(删除尾部除外),若有多次删除/插入操作又有随机遍历的需求,可以再构建一个ArrayList,把复合条件的对象放入新ArrayList,而不要频繁操作原ArrayList LinkedList使用场景:经常有删除/插入操作而顺序遍历列表 3. HashSet与TreeSet的使用场景 HashSet

Check whether list of custom objects have same value for a property in Java 8

别来无恙 提交于 2020-03-13 07:19:50
问题 I am new to Java 8. I have a list of custom objects of type A, where A is like below: class A { int id; String name; } I would like to determine if all the objects in that list have same name. I can do it by iterating over the list and capturing previous and current value of names. In that context, I found How to count number of custom objects in list which have same value for one of its attribute. But is there any better way to do the same in java 8 using stream? 回答1: One way is to get the

C# Queue (队列)

依然范特西╮ 提交于 2020-03-13 05:35:38
队列(Queue):模拟队列的数据操作。 例如,排队买票就是一个队列操作,后来的人排在后面,先来的人排在前面,并且买票请求先被处理。为了模拟队列的操作,Queue在ArrayList的基础上加入了以下限制 1.元素采用先入先出机制(FIFO,First In First Out),即先进入队列的元素必须先离开队列。最先进入的元素称为队头元素。 · 元素只能被添加到队尾(称为入队),不允许在中间的某个位置插入。也就是说, 不支持ArrayList中的Insert方法 2.只有队头的元素才能被删除(称为出队),不允许直接对队列中的非队头元素进行 删除,从而保证FIFO机制。也就是说,不支持ArrayList中的Remove方法。 3.不允许直接对队列中非队头元素进行访问。也就是说,不支持ArrayList中的索引访 问,只允许遍历访问 using System; using System.Collections.Generic; using System.Linq; namespace rooxml { public class main { public static void Main () { Queue<A> que = new Queue<A> (); que.Clear (); que.Enqueue (new A(){k=11, v="i am fw"}); que

Java算法训练:数的划分

房东的猫 提交于 2020-03-12 12:06:25
问题描述   将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式   n,k 输出格式   一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;} 数据规模和约定   6<n<=200,2<=k<=6 import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public static int n,count=0,sum=0,m; //ArrayList 排序有重复值 public static ArrayList<Integer> list = new ArrayList<Integer>(); //Set HashSet 排序无重复值 public static Set<String> set = new HashSet<String>(); public static void main(String[] args) { // TODO Auto-generated

java如何向数组里添加元素

女生的网名这么多〃 提交于 2020-03-12 11:44:23
向数组里添加一个元素怎么添加,这儿总结有三种方法: 1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。 但有个可以改变大小的数组为ArrayList,即可以定义一个ArrayList数组,然后用add(element)方法往里添加元素即可,还可add(index,element)往指定下标处添加元素;例子如下: List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(2,4); System.out.println(list); 打印结果: [1, 2, 4, 3] 2、思路为先把array转化为list,用list的add()方法添加元素,再把list转化为array。 但这儿会有一个陷阱盲区,在把array转化为list的过程中,使用的asList()方法会返回一个final的,固定长度的ArrayList类,并不是java.util.ArrayList,直接这样利用它进行add()或remove()是无效的。 List<Integer> list=new ArrayList<Integer>(); list=Arrays.asList(sz); list.add(5); 那应该怎么做呢

编译原理——正规式转DFA算法概述

让人想犯罪 __ 提交于 2020-03-11 19:05:21
一、概念概述 给定一个单词,判断该单词是否满足我们给定的单词描述规则,需要用到编译原理中词法分析的相关知识,其中涉及到的两个很重要的概念就是正规式(Regular Expression)和有穷自动机(Finite Automata)。正规式是描述单词规则的工具,首先要明确的一点是所有单词组成的是一个无穷的集合,而正规式正是描述这种无穷集合的一个工具;有穷自动机则是识别正规式的一个有效的工具,它分为确定的有穷自动机(Deterministic Finite Automata,DFA)和不确定的有穷自动机(Nondeterministic Finite Automata,NFA)。对于任意的一个单词,将其输入正规式的初始状态,自动机每次读入一个字母,根据单词的字母进行自动机中状态的转换,若其能够准确的到达自动机的终止状态,就说明该单词能够被自动机识别,也就满足了正规式所定义的规则。而DFA与NFA之间的差异就是对于某一个状态S,输入一个字符a,DFA能够到达的下一个状态有且仅有一个,即为确定的概念,而NFA所能到达的状态个数大于或等于一个,即不确定的概念。因为NFA为不确定的,我们无法准确的判断下一个状态是哪一个,因此识别一个正规式的最好的方式是DFA。那么,如何为一个正规式构造DFA就成了主要矛盾,解决了这个问题,词法分析器就已经构造完成。从正规式到DFA需要通过两个过程来完成:  

java提高篇(十九)-----数组之二

て烟熏妆下的殇ゞ 提交于 2020-03-11 12:29:31
前面一节主要介绍了数组的基本概念,对什么是数组稍微深入了一点点,在这篇博文中主要介绍数组的其他方面。 三、性能?请优先考虑数组 在java中有很多方式来存储一系列数据,而且在操作上面比数组方便的多?但为什么我们还需要使用数组,而不是替代它呢?数组与其他种类的容器之间的区别有三个方面:效率、类型和保存基本类型的能力。 在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。 在项目设计中数组使用的越来越少了,而且它确实是没有List、Set这些集合使用方便,但是在某些方面数组还是存在一些优势的,例如:速度,而且集合类的底层也都是通过数组来实现的。 --------这是ArrayList的add()------ public boolean add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; } 下面利用数组和list来做一些操作比较。 一、求和 Long time1 = System.currentTimeMillis(); for(int i = 0 ; i < 100000000 ;i++){ sum += arrays[i%10]; } Long time2 = System.currentTimeMillis();