小编dva*_*ria的帖子

为什么Java Collections Framework提供了两种不同的排序方式?

如果我有一个我想要排序的元素列表,Java提供了两种方法来解决这个问题.

例如,假设我有一个Movie对象列表,我想按标题对它们进行排序.

我可以这样做的一种方法是通过调用静态java.util.Collections.sort()方法的单参数版本,并将我的电影列表作为单个参数.所以我会调用Collections.sort(myMovieList).为了使其工作,必须声明Movie类以实现java.lang.Comparable接口,并且必须在此类中实现所需的方法compareTo().

另一种排序方法是使用影片列表和java.util.Comparator对象作为参数调用静态java.util.Collections.sort()方法的双参数版本.我会调用Collections.sort(myMovieList,titleComparator).在这种情况下,Movie类不会实现Comparable接口.相反,在构建和维护影片列表本身的主类中,我将创建一个实现java.util.Comparator接口的内部类,并实现一个必需的方法compare().然后我将创建此类的实例并调用sort()的双参数版本.第二种方法的好处是您可以创建无限数量的这些内部类比较器,因此您可以以不同的方式对对象列表进行排序.在上面的例子中,

我的问题是,为什么麻烦学习两种方式在Java中进行排序,当Collections.sort()的双参数版本执行第一个单参数版本所做的所有事情时,还有一个额外的好处就是能够对列表的元素进行排序基于几个不同的标准?在编码时必须记住这一点.你有一个基本机制,用Java来排序列表来了解.

java sorting collections comparable comparator

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

将行插入查询结果(总和)

我有一份报告,显示客户订购的产品及其价格:

CompanyA    Product 7    14.99  
CompanyA    Product 3    45.95
CompanyA    Product 4    12.00
CompanyB    Product 3    45.95
CompanyC    Product 7    14.99
CompanyC    Product 3    45.95
Run Code Online (Sandbox Code Playgroud)

我想插入一行汇总每个公司的订单,如下所示:

CompanyA    Product 7    14.99  
CompanyA    Product 3    45.95
CompanyA    Product 4    12.00
               Total:    72.94
CompanyB    Product 3    45.95
               Total:    45.95
CompanyC    Product 7    14.99
CompanyC    Product 3    45.95
               Total:    60.94
Run Code Online (Sandbox Code Playgroud)

这里有一些代码显示了我的查询的基本结构:

SELECT company
   , product
   , price
FROM companyMaster
ORDER BY company,
   , product,
   , price;
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?我在Transact-SQL(Microsoft SQL Server)中写这个.

sql sum insert

5
推荐指数
1
解决办法
4170
查看次数

简单的Vim编程(vimrc文件)

我正在尝试学习如何使用自己的函数配置我的.vimrc文件.

我想编写一个遍历文件中每一行的函数并计算字符总数,但忽略所有空格.这是一个编程练习,也是更复杂程序的踏脚石(我知道还有其他方法可以使用Vim或外部程序获得这个示例值).

这是我到目前为止所拥有的:

function countchars()
    let line = 0
    let count = 0
    while line < line("$")
        " update count here, don't count whitespace
        let line = getline(".")
    return count
endfun
Run Code Online (Sandbox Code Playgroud)

我可以用哪个功能代码替换该注释行?

vim character count

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

将语言映射到范例

我最近阅读了Eric Steven Raymond的文章"如何成为一名黑客",我喜欢他建议学习5种关键语言(他建议使用Python,C/C++,Lisp,Java和Perl)作为一种覆盖主要编程范式的方法.今天用.

他的建议是,程序员知道哪些特定语言并不重要.由于两个原因,了解不同的编程方法更为重要.

第一个原因是,一旦你知道解决问题的方法的一般方法,它就会使得学习新语言变得微不足道.

第二个原因是没有一种最好的语言 - 它们都有权衡.考虑到特定类型的问题,最好知道要选择哪种语言.这是我最感兴趣的,但我有一个问题,他真正区分他建议的5种语言.似乎有很多重叠.

所以我的具体问题是,鉴于这5种语言,他们的预期编程范例是什么,并给出一个最适合的问题类型的例子.

一个示例答案(我不确定这个答案是否正确):

Perl
- mainly a functional language
- great for quick text substitutions in multiple files from the command line.
Run Code Online (Sandbox Code Playgroud)

我发现了一些其他类似的问题,但我想特别了解这5种语言.我只是在寻找一个起点,没有太详细.提前致谢!

c++ lisp python java perl

3
推荐指数
1
解决办法
492
查看次数

自引用C结构

你能在C中有一个具有相同结构元素的结构吗?我在C中实现二叉搜索树的第一次尝试如下:

#include <stdio.h>

struct binary_tree_node {

    int value;
    struct binary_tree_node *left = null;
    struct binary_tree_node *right = null;

};

main() {

    struct binary_tree_node t;
    t.value = 12;

    struct binary_tree_node y;
    y.value = 44;
    t.left = &y;
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这段代码有什么问题,任何帮助都会受到赞赏.我意识到在C中有关于二进制搜索实现的其他问题,但我试图用我自己的代码从头开始解决这个问题(当然还有一些指导).谢谢!

c struct pointers self-reference

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

在Java 5中读取输入的最佳实践方法

我正在为孩子们编写教程,以便在Java 5平台上学习编程.

从控制台程序读取文本数据的最佳方法是什么?

"最佳"是指在Java 5级别上最常用的方式.我意识到从命令行读取文本输入充满挑战,并且一个保护良好的方法必须包含几个级别的异常,这很好.在本教程的这一点上,我已经介绍了基本输出,Java中的基本程序结构,异常处理.如果您认为在用户输入之前需要涵盖其他事项,我会欢迎您提出建议.

有趣的是,在这个问题上进行网络搜索并没有立即给出答案,有很多东西可以解决,并且没有最佳实践意识.我想这是因为有太多隐藏的警告,它并不像它最初看起来那么简单.

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

class Example {

    private BufferedReader br;
    private String inputString;

    public static void main(String[] args) {

        String inputString = null;

        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));

        System.out.print("\n > ");

        try {

            inputString = br.readLine();

        } catch (IOException ioe) {

            System.out.println("\n IOException called.");
        }

        System.out.println("\n Input was: " + inputString);
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令编译它:javac Example.java

使用以下命令运行它:java示例

有没有更好的方法可以让孩子更有教育意义?有趣的是这些东西看起来很基本,但是当你真正看到它时,这就是用很少的错误检查来收集一行文本的很多代码.

如果你想添加关于你最初如何对编程感兴趣的可选评论,我将非常感激.对我来说,这是偶然的机会(我的父亲必须把一个哑终端带回家在家工作,通过与unix系统的拨号连接连接到他的工作主机,当他告诉我如何列出'游戏'时我被迷住了.

谢谢你的帮助.

java unix console command-line exception-handling

3
推荐指数
1
解决办法
3397
查看次数

在文件范围内初始化 C 中的数组大小

我想根据计算初始化一个数组,但是当我尝试这样做时编译器给我一个错误(我使用的是 GCC 版本 6.3.0):

const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
char textgrid[SCREEN_HEIGHT/16][SCREEN_WIDTH/16];
Run Code Online (Sandbox Code Playgroud)

编译器错误如下:

error: variably modified 'textgrid' at file scope
Run Code Online (Sandbox Code Playgroud)

有没有办法在文件范围内执行此操作?

看来我不能使用计算作为 #define 语句的一部分来完成此操作,因为以下给出了相同的错误:

#define TEXTGRID_WIDTH (SCREEN_WIDTH / 16)
#define TEXTGRID_HEIGHT (SCREEN_HEIGHT / 16)
char textgrid[TEXTGRID_HEIGHT][TEXTGRID_WIDTH];
Run Code Online (Sandbox Code Playgroud)

c arrays declaration variable-length-array storage-duration

3
推荐指数
1
解决办法
430
查看次数

使用Java EE 6的MVC2模式

我正在尝试学习如何使用Java EE 6构建Web应用程序,但我很难理解在典型MVC2设计的组件之间传递信息的最佳方法.

我理解它的方式,使用Java EE的MVC2模式将是:数据是模型,控制器是servlet,视图是JSP.这只是一个例子.

所以我写了以下三个部分,我知道如何在我正在使用的服务器(Tomcat 7)中安装它们,入口点将是下面的html文件.我正在努力解决servlet如何转发它对JSP的响应,以及如何将JSP发送回客户端浏览器.

HTML文件(demo.html):

<html> 
  <head>
    <title>MVC2 Demo</title>
  </head>
  <body>
    <form method='post' action='/mvc2-demo/DemoServlet'>
      <h1>   MVC2 Demo   </h1>

      Name: <input type='text' name='input_name' size='50'>
      <br><br>
      Age:  <input type='text' name='input_age' size='10'>
      <br><br>

      <input type='submit' value='SUBMIT INFO'>
    </form>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

servlet(DemoServlet.java):

import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DemoServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) {

        response.setContentType("text/html");

        try {

            PrintWriter pw = response.getWriter();

            String name = request.getParameter("input_name");
            String age = request.getParameter("input_age");

            pw.println("Information received by …
Run Code Online (Sandbox Code Playgroud)

html java jsp servlets

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

在C++中实现深度优先搜索

我正在学习数据结构和抽象数据类型,并且我一直陷入一个不断涌现的问题.

我不明白计算机科学现在已有50年历史了(或更老,我不确切知道)以及数据结构,ADT和算法如何成为这一切的基础部分,但仍然没有标准任何一个.

我的问题实际上非常具体:我正在尝试在C++中实现深度优先搜索,其方式可以适用于任何本机(内置)数据类型.我的问题是,我先在哪里看?我知道STL的堆栈类可以用来实现DFS算法,但STL是第一个看的地方吗?我应该从头开始实现DFS,使用堆栈以及我对实现此算法的了解吗?或者,当专业程序员需要进行这种搜索时,他们会找到一个库?

请注意,这个问题并不像我希望的那样具体.

c++ depth-first-search

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

Pygame 中的透明精灵

我正在编写一些使用 Pygame 的 Python 代码,试图在背景顶部显示一个小精灵(一个球)。我有那部分工作,但我试图让球精灵的背景变得透明,这样它就不会显示为“黑色正方形内的球”精灵,而是显示为黑色像素不存在位块传送到显示表面。

这是我的代码:

# For sys.exit()
import sys

# Pygame imports
import pygame
from pygame.locals import *

# Initialize all the Pygame Modules
pygame.init()

# Build a screen (640 x 480, 32-bit color)
screen = pygame.display.set_mode((640,480)) 

# Create and Convert image files
# Use JPG files for lots of color, and use conver()
# Use PNG files for transparency, and use convert_alpha()
background = pygame.image.load("bg.jpg").convert()
ball = pygame.image.load("ball.png").convert_alpha()
ball.set_colorkey(-1, RLEACCEL) # Use the upper-left pixel color as …
Run Code Online (Sandbox Code Playgroud)

python pygame

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