小编Sco*_*ott的帖子

创建自定义迭代器Java?

我对如何在Java中为类实现自定义迭代器感到困惑.我需要基本上创建一个ArrayList,而不使用我已经可用的内置库.我理解创建类的基础知识,但是我无法理解如何让Iterator适应所有这些.我有以下内容:

我创建了一个实现可迭代接口的泛型类,它看起来像这样:

public class MyArrayList<T> implements Iterable<T> {
Run Code Online (Sandbox Code Playgroud)

然后我开始创建一个名为MyIterator的类,根据文档的措辞是一个独立的类.这看起来相当简单我创建了一个名为MyIterator的新类,并让它实现了迭代器接口,所以它看起来像这样:

public class MyIterator<T> implements Iterator<T>{
Run Code Online (Sandbox Code Playgroud)

我的困惑在于以下几点.该文档说Iterator需要在它自己的类中,但是如何访问"MyArrayList"中的数据成员以完全实现hasNext()和next().由于底层数组中的数据成员是私有的(因为它们应该是),我没有看到外部类如何完全实现这些方法.我误解了需要什么?通过单独的类它仍然是"MyArrayList"类的一部分,但定义不同?

我希望这有所帮助,正如我所说,我认为我理解我需要什么,我只是不确定我的迭代器适合所有这些.

java iterator

6
推荐指数
1
解决办法
6537
查看次数

使用JDBC在SQL中的日期之间进行搜索?

我目前正在编写一个Java Swing应用程序,它从MYOB数据库文件中读取数据并在表格中显示某些信息.我已经能够成功生成所需的SQL语句,但是我无法添加日期之间的搜索功能(我们的数据库非常大,所以我们试图限制结果).我的一个查询的示例如下(用Java编写):

rs = stmt.executeQuery("SELECT sales.InvoiceNumber, sales.ShipToAddress, sales.Date "
                        + "FROM sales, customers "
                        + "WHERE sales.CardRecordID = customers.CardRecordID "
                        + "AND customers.Name = 'Cash Sales' "
                        + "ORDER BY sales.ShipToAddress ASC, sales.Date DESC"
                        + ";");
Run Code Online (Sandbox Code Playgroud)

我有两个日期(它们实际上是Java中的字符串,但格式为dd/MM/yyyy).

我已经尝试AND在我WHEREBETWEEN语句中使用另一个子句,但我从JDBC得到以下错误[MYOB ODBC]Error getting the literal value of right operand.

实际陈述如下:

rs = stmt.executeQuery("SELECT sales.InvoiceNumber, sales.ShipToAddress, sales.Date "
                        + "FROM sales, customers "
                        + "WHERE sales.CardRecordID = customers.CardRecordID "
                        + "AND customers.Name = 'Cash Sales' "
                        + …
Run Code Online (Sandbox Code Playgroud)

java sql jdbc

6
推荐指数
1
解决办法
4万
查看次数

C++列表迭代器算术?

我正在尝试使用迭代器创建一组循环,并且我遇到了一些迭代器算法的问题(我认为这是可能的但是不起作用).

下面是一些代码:

  for (list<Term>::iterator itr = final.begin(); itr != final.end(); itr++) {
        for(list<Term>::iterator j = itr + 1; j != final.end(); j++) {
            cout << itr->term << " " << j->term;
            if(itr->term == j->term) {
                //Do stuff
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想要做的是让j从队列中的下一个位置开始.原因是我不想检查第一个项目.错误本身来自我指定的代码中的部分itr + 1.现在我确定使用指针你可以像这样算术,为什么它不能使用列表迭代器(这基本上是相同的东西?)

我从IDE获得的错误如下:main.cpp:237:48: error: no match for ‘operator+’ in ‘itr + 1’.我再次认为你可以在迭代器上做这种算法,所以我不确定该怎么做才能使这个工作,我可以尝试一个替代实现吗?

c++ iterator list

2
推荐指数
2
解决办法
4017
查看次数

标签 统计

iterator ×2

java ×2

c++ ×1

jdbc ×1

list ×1

sql ×1