iterator

add-two-numbers-ii

老子叫甜甜 提交于 2020-03-22 22:18:40
注意: 有一种好的方法,是将链表倒转,然后依次相加。 但是,按照题目要求,用了不改变原链表的方法。 就是将两个链表增加到相同长度,然后 递归相加,子函数返回后 处理进位。 https://leetcode.com/problems/add-two-numbers-ii/ package com.company; import java.util.*; class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } class Solution { ListNode addTwo(ListNode l1, ListNode l2) { //System.out.printf("add two %d, %d \n", l1.val, l2.val); ListNode ret = new ListNode(l1.val + l2.val); if (l1.next != null && l2.next != null) { ret.next = addTwo(l1.next, l2.next); ret.val += ret.next.val / 10; ret.next.val = ret.next.val % 10; } else { ret.next = null; } return ret; }

Iterator of repeated words in a file

我的梦境 提交于 2020-03-22 06:44:12
问题 Suppose, I'm writing a function to find "repeated words" in a text file. For example, in aaa aaa bb cc cc bb dd repeated words are aaa and cc but not bb , because two bb instances don't appear next to each other. The function receives an iterator and returns iterator like that: def foo(in: Iterator[String]): Iterator[String] = ??? foo(Iterator("aaa", "aaa", "bb", "cc", "cc", "bb")) // Iterator("aaa", "cc") foo(Iterator("a", "a", "a", "b", "c", "b")) // Iterator("a") How would you write foo ?

Iterator of repeated words in a file

不想你离开。 提交于 2020-03-22 06:42:06
问题 Suppose, I'm writing a function to find "repeated words" in a text file. For example, in aaa aaa bb cc cc bb dd repeated words are aaa and cc but not bb , because two bb instances don't appear next to each other. The function receives an iterator and returns iterator like that: def foo(in: Iterator[String]): Iterator[String] = ??? foo(Iterator("aaa", "aaa", "bb", "cc", "cc", "bb")) // Iterator("aaa", "cc") foo(Iterator("a", "a", "a", "b", "c", "b")) // Iterator("a") How would you write foo ?

集合框架问题详解

倾然丶 夕夏残阳落幕 提交于 2020-03-21 18:03:49
3 月,跳不动了?>>> 什么是集合??? 用一句话来概括就是,集合就是存放“类对象“的容器,集合类存放于java.util包中, 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是 指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。集合接口分为:Collection和Map,list、set实现了Collection接口。 集合相对于数组的作用 集合相对于数组来说有很多的优势,比如说集合的长度可以改变,但是数组的长度就不能改变,只要确定后就永远都不可以改变。集合大体分为三种,list集合 set集合和map集合。这三种集合各有优势,我们平时用的大多是list和map。list集合的优势在与读取速度快,适合用来遍历数据,因为list集合根本还是数组,只不过是在数组上面做了很多的运算才使得他可一改变长度。而map集合的优势是他查找数据容易,应为他包含了两个对象,可以很快的查找数据,改变数据。 使用Iterator遍历结合的方法 public class MyTest { public static void main (String[] args) { //1 、 iterator 迭代 ArrayList 集合 List list = new ArrayList<>() ; // 集合

Collection接口

孤者浪人 提交于 2020-03-21 14:37:10
3 月,跳不动了?>>> Collection Collection是List、Queue和Set的超集,它继承于Iterable,也就是说Collection集合类都支持for-each操作。 方法定义 //返回集合长度,若长度大于Integer.MAX_VALUE,则返回Integer.MAX_VALUE int size(); //如果集合元素为0,返回true boolean isEmpty(); //依据equal()方法判断集合中是否包含指定元素 boolean contains(Object o); //返回一个含有集合中所有元素的数组 Object[] toArray(); //同上,增加了类型转换 <T> T[] toArray(T[] a); //向集合中加入一个元素,成功返回true,失败或已包含此元素返回false boolean add(E e) //删除指定元素 boolean remove(Object o); //若该集合包含指定集合所有元素,返回true boolean containsAll(Collection<?> c); //将指定集合的元素添加到该集合中 boolean addAll(Collection<? extends E> c); //从集合删除指定集合中的元素 boolean removeAll(Collection<?> c)

java中遍历map的两种方式

你离开我真会死。 提交于 2020-03-21 08:12:37
1.先将map对象转成set,然后再转为迭代器 1 Iterator iterator = map.entrySet().iterator(); 2 while(iterator.hasNext()){ 3 Entry entry = iterator.next(); 4 System.out.println(entry.getKey()); // 获取key 5 System.out.println(entry.getValue()); // 获取value 6 } 2.先将map转为set类型的key值集合,然后转为迭代器 1 Iterator iterator = map.keySet().iterator(); 2 while(iterator.hasNext()){ 3 Object key = (Object)iterator.next(); 4 System.out.println(key); // 获取key 5 System.out.println(map.get(key)); // 获取value 6 } 来源: https://www.cnblogs.com/houhaihu/p/6139181.html

Java中HashMap遍历的两种方式

笑着哭i 提交于 2020-03-21 08:10:30
[转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种:  Map map = new HashMap();  Iterator iter = map.entrySet().iterator();  while (iter.hasNext()) {  Map.Entry entry = (Map.Entry) iter.next();  Object key = entry.getKey();  Object val = entry.getValue();  }  效率高,以后一定要使用此种方式!第二种:  Map map = new HashMap();  Iterator iter = map.keySet().iterator();  while (iter.hasNext()) {  Object key = iter.next();  Object val = map.get(key);  }  效率低,以后尽量少使用! HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:  public class HashMapTest {  public static void main(String

总体框架

﹥>﹥吖頭↗ 提交于 2020-03-21 06:20:56
Java集合是Java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合的工具包位置是java.util.*。 Java集合主要包括四部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections) 主要框架图: 先抓主干:Collection和Map Collection 是List、Set和Queue接口的父接口 定义了可用于操作List、Set和Queue的方法——增删改查 collection的API中定义的方法: List接口 List是元素有序并且可以重复,被称为序列 List可以精确的控制每个元素的插入位置,或删除某个元素 List的常用子类: ArrayList LinkedList Vector Stack 下面是List的JDK源码的UML图: Set接口 Set接口中不能加入重复元素,无序 Set接口常用子类: 散列存放:HashSet 有序存放:TreeSet 下面是Set的JDK源码的UML图: Map Map接口 Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value Map中的键值对以Entry类型的对象实例形式存在 键(key)不能重复,value值可以

java集合框架——List

∥☆過路亽.° 提交于 2020-03-21 06:19:23
一、List接口概述 List有个很大的特点就是可以操作角标。 下面开始介绍List接口中相对于Collection接口比较特别的方法。在Collection接口中已经介绍的方法此处就不再赘述。 1.添加 void add (int index, E element) 在列表的指定位置插入指定元素(可选操作)。 boolean addAll (int index, Collection <? extends E > c) 将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。 这两个方法相对于Collection接口,可以直接在特定的地方插入新的元素或者集合。 2.删除。 E remove (int index) 移除列表中指定位置的元素(可选操作)。 这个方法相对于Collection接口来说,可以直接删除特定位置上的元素。 3.修改 E set (int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。 这个方法可以将指定位置上的元素替换为另外一个元素(对象)。 4.查找 E get (int index) 返回列表中指定位置的元素。 int indexOf ( Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。 int lastIndexOf ( Object o)

java第十三天_集合,List集合

大兔子大兔子 提交于 2020-03-21 04:02:47
集合类: 为什么出现集合类:面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。 数组和集合类同时容器,有何不同? 数组虽然也可以存储对象,但长度是固定的;集合 长度是可变的 。 数组中可以存储基本数据类型,集合 只能存储对象 。 集合类的特点: 集合只能用于存储对象( 对象的引用(地址 ) ) 集合长度是可变的 集合可以存储不同类型的对象。 集合框架的构成及分类: 迭代器: 基本格式: Iterator it = al iterator ( ) ;//获取迭代器,用于取出集合中的元素。 while ( it.hasNext ( ) ) //使用for循环更加节约内存。 { sop ( it.next ( ) ) ; } 使用迭代器的需求: 把取出方式定义在集合的内部,这样取出方式就可以直接访问集合内容的元素。那么取出方式就被定义成了内部类。而每一个容器的数据结构不同,所以取出的动作细节也不一样。但是都有共性的内容,判断和取出。那么可以将写共性抽取。那么这些内部类都符合一个规则。该规则是Iterator如何获取及诶和的取出对象呢?通过一个对外提供的方法。Iterator (); 在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。