Bag类型

作者: 低吟浅唱1990 | 来源:发表于2019-01-20 13:44 被阅读3次

背包是一种不支持从中删除元素的集合数据类型---其作用就是帮助用例收集元素并迭代遍历所有收集到的元素。迭代的顺序不确定且与用例无关。

基于链表

import java.util.Iterator;
import java.util.NoSuchElementException;
public class Bag<Item> implements Iterable<Item> {
   // 链表
    private static  class Node<Item>{
        private Item item;
        private Node<Item>next;
    }
    private Node<Item>first;
    private int n;
    public Bag() {
        first = null;
        n = 0;
    }
    public boolean isEmpty(){
        return first == null;
    }
    public int size(){
        return n;
    }
    private void add(Item item){
        Node<Item>oldfirst = first;
        first = new Node<Item>();
        first.item = item;
        first.next = oldfirst;
        n++;
    }
    @Override
    public Iterator<Item> iterator() {
        return new ListIterator<Item>(first);
    }
    private class  ListIterator<Item> implements Iterator<Item>{
        private Node<Item> current;

        public ListIterator(Node<Item> first) {
            this.current = first;
        }

        @Override
        public boolean hasNext() {
            return current != null;
        }

        @Override
        public Item next() {
            if (!hasNext())throw new NoSuchElementException();
            Item item = current.item;
            current = current.next;
            return item;
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }
    }
}


调用

 public static void main(String[] args){
        Bag<Double> numbers = new Bag<>();
        Random random = new Random(System.currentTimeMillis());
        for (int i = 0; i < 10; i++) {
            int a = random.nextInt(100);
            System.out.println(a);
            numbers.add((double) a);
        }
        int N = numbers.size();
        double sum = 0.0;
        for (double x:numbers) {
            sum += x;
        }
        System.out.print(sum);

    }

相关文章

  • Bag类型

    背包是一种不支持从中删除元素的集合数据类型---其作用就是帮助用例收集元素并迭代遍历所有收集到的元素。迭代的顺序不...

  • pig 基础.md

    ## pig的数据类型 ###1:基本数据类型 ###2:复杂类型(map、 tuple、 bag) 2.1 m...

  • Rosbag API的学习

    一、用Rosbag API来对bag文件进行解析。 1.1bag文件的基本数据类型: 1.2用API对上图的信息进...

  • 女士包的中英文对照(未完)

    英文名中文名satchel bag手提包tote bag托特包bucket bag水桶包saddle bag马鞍包...

  • 将bag文件转化为txt文件

    1. 将bag文件转为txt 在获得其他bag文件的时候,也可以先通过查看bag信息 打印bag的话题信息 再将b...

  • Hibernate集合映射

    这一节笔者主要介绍Hibernate常见的集合映射Set、List、Map和Bag等集合类型。 1. Set集合映...

  • voa

    doggy bag 打包饭菜回家 a bag of bone 瘦骨嶙峋 Great Scott! 天哪! Holy...

  • 2018-03-29bag making machine

    bag making machine

  • rosbag 使用

    来自ROS使用介绍——rosbagROS bag的绘图工具:rqt_bag和PlotJuggler 录制包 ros...

  • 常见的词向量类型

    最近面试中经常被问到常用的词向量的表示方式,这里就整理一下常见的类型 1、词频做向量值 Bag-of-words ...

网友评论

      本文标题:Bag类型

      本文链接:https://www.haomeiwen.com/subject/zisxjqtx.html