小编Tho*_*hor的帖子

`if(!cond(it.next()))`中的`cond`代表什么?

我是Java的新手,正在尝试学习迭代器的概念.我在Java Tutorial Oracle中遇到过这段代码.我的问题是,什么是condif (!cond(it.next()))代表.文档没有说明cond()代表什么.

static void filter(Collection<?> c) {
    for (Iterator<?> it = c.iterator(); it.hasNext(); )
        if (!cond(it.next()))
            it.remove();
}
Run Code Online (Sandbox Code Playgroud)

java conditional iterator

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

两种改组方法中哪一种效果更好?

我试图在List中随机洗牌整数集合,我想出了两种改组方法来完成这项工作.但是,我不确定哪一个效果更好?有没有人有任何意见或建议?

public class TheCollectionInterface {

    public static <E> void swap(List<E> list1, int i, int j) {
        E temp = list1.get(i);
        list1.set(i, list1.get(j));
        list1.set(j, temp);
    }

// Alternative version:    
//    public static void shuffling(List<?> list, Random rnd){
//        for(int i = list.size(); i >= 1; i--){
//            swap(list, i - 1, rnd.nextInt(i));
//        }
//    }


    public static <E> void shuffling(List<E> list1, Random rnd) {
        for (int i = list1.size(); i >= 1; i--){
            swap(list1, i - 1, rnd.nextInt(list1.size()));
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java random collections list

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

Technical reasons behind using Arrays.deepHashCode() when calculating hashcode for multidimensional array

I have read that to calculate the hashcode for multidimensional array, one has to use Arrays.deepHashCode() method instead of Arrays.hashCode() method, but I don't really understand the technical reason behind it. Could someone please explain it to me?

    Object[][] one = {
        {1, 2, 3},
        {11, 22, 33}
    };
    int two = Arrays.deepHashCode(one);
    int three = Arrays.hashCode(one);
    System.out.println("two " + two);
    System.out.println("three " + three);
Run Code Online (Sandbox Code Playgroud)

Result:

two 997365
three 312355675
Run Code Online (Sandbox Code Playgroud)

java arrays hashcode

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

为什么Java变量不经常被声明为`final`?比较swift中的let关键字

在swift中,let如果变量在初始化后没有改变,建议用关键字声明变量.我看到很多变量被声明为let.

在java中,我认为关键字final可以起到同样的作用.但是根据我有限的经验,我只看到人们final在极少数情况下声明变量,例如PI.

为什么Java变量不final经常被声明?有什么我想念的吗?

java variables final let swift

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

x86 汇编语言中空终止字符串和不以空终止的字符串有什么区别

我目前正在按照 Kip Irvine 的“汇编语言 x86 编程”一书学习汇编编程。

在书中,作者说

最常见的字符串类型以空字节(包含 0)结尾。称为以空字符结尾的字符串

在本书的后续部分,作者有一个没有空字节的字符串示例

greeting1 \
BYTE "Welcome to the Encryption Demo program "
Run Code Online (Sandbox Code Playgroud)

所以我只是想知道,在 x86 汇编语言中,空终止字符串和不以空终止的字符串有什么区别?它们可以互换吗?或者它们彼此不等价?

string null x86 assembly masm

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

为什么可以将变量分配给接口类型?

我是Java的新手,正在尝试学习界面的概念.我在网上看到了下面的代码.我知道接口无法实例化.我的问题是,WatchService,Path,WatchKey和WatchEvent都是接口,为什么变量可以分配给接口类型?实例化是一样的吗?

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;

public class WatchServices {

    public static void main(String[] args) throws IOException {
        WatchService ws1 = FileSystems.getDefault().newWatchService();

        Path p1 = Paths.get("/Users/justin/Desktop/Codes Netbean/JavaRandom");

        WatchKey wk1 = p1.register(ws1, ENTRY_CREATE);

        while(true){
            for(WatchEvent<?> event : wk1.pollEvents()){
                System.out.println(event.kind());
                Path file  = (Path)event.context();
                System.out.println(file);
            }
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

java interface instantiation

0
推荐指数
1
解决办法
50
查看次数

字符串不匹配,即使"patternString"是"text"的子字符串

我正在尝试学习Java正则表达式,并尝试将较小的字符串与另一个字符串进行匹配.以下是我提出的代码.

String text = "this is the text to be searched for occurrences of the http://www.nba.com.";
    String patternString = "http://.*";
    Pattern p1 = Pattern.compile(patternString);
    Matcher m1 = p1.matcher(text);
    boolean doesItMatch = m1.matches();
    System.out.println(doesItMatch);
    System.out.println(m1.group());
Run Code Online (Sandbox Code Playgroud)

我期待着doesItMatch平等truem1.group()平等http://nba.com..但是,IDE改为输出

false
Exception in thread "main" java.lang.IllegalStateException: No match found
    at java.util.regex.Matcher.group(Matcher.java:536)
    at java.util.regex.Matcher.group(Matcher.java:496)
    at JTORegex.RegularExpression.main(RegularExpression.java:23)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

为什么字符串与字符串patternString不匹配textpatternString确实存在于text.为什么会这样?

java regex

0
推荐指数
1
解决办法
97
查看次数

尝试将setInstance.toArray()强制转换为Integer [],没有编译时错误,但是有运行时错误,为什么?

我正在尝试Java HashSet类及其toArray()方法。下面是我想出的代码。编译器没有显示任何错误,但是当我运行代码时,IDE输出错误消息:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
    at JTOCollection.TheCollectionInterface.main(TheCollectionInterface.java:26)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

由于我的经验不足,我无法完全理解错误消息背后的全部原因,有人可以向我解释一下吗?

Set<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);
set1.add(2);

Integer[] intArray = (Integer[]) set1.toArray();
for(Integer i : intArray){
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

java casting set toarray

0
推荐指数
1
解决办法
55
查看次数

为什么寄存器(或寄存器的数字表示)不存在于机器指令中

我正在研究x86汇编语言,遵循Kip Irvine的书"用于x86处理器的第7版Edi的汇编语言".

在第4章中,作者谈到了机器指令

在此输入图像描述

我的问题是,为什么机器指令中没有al(或表示al)A0 00010400?如果al没有,机器怎么知道我们想要将地址的值移动00010400al

============ 编辑1 ===============

我试过mov bl var1并生成了一个机器代码bl

.386
.MODEL FLAT, STDCALL
.STACK 4096
ExitProcess PROTO, dwExitCode: DWORD

.DATA
var1 BYTE 10h

.CODE 
    main PROC 
    MOV BL, var1 

invoke ExitProcess, 0
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

x86 assembly intel

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

类层次图中的实线箭头与虚线箭头

我目前正在学习java集合。我已经看到了Set接口及其子接口和具体实现类的类层次结构图。

在此输入图像描述

没有对实线箭头和虚线箭头的含义进行解释。

根据我自己的判断,我假设实线箭头表示extends,虚线箭头表示Implements,但我的假设正确吗?

有没有关于这些符号的含义和用法的官方文档?

java class-diagram interface class

0
推荐指数
1
解决办法
5660
查看次数

将0x10添加到0x7FF0不会导致0x8000,而是获得0x7F00

我目前正在学习x86汇编语言.

我有以下代码

.386
.MODEL FLAT, STDCALL
.STACK 4096
ExitProcess PROTO, dwExitCode: DWORD

.CODE
    main PROC 
    MOV AX, 7FF0h
    ADD AL, 10h

invoke ExitProcess, 0
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

之前,我感动10hAL,AX包含值0x7FF0

在此输入图像描述

移动后10h进入AL,我期待的AX是价值0x8000,而是在价值AX0x7F00.

在此输入图像描述

怎么会加入0x100xF0在最右边的字节(最低显著字节)并没有延续1到第二个最右边的字节?换句话说,怎么就加入0x100x7FF0没有造成0x8000

我的猜测是,因为当我加入0x10,我加入0x10AL(AL在另外的时间包含0xF0),因此加入0x100xF0导致0x100,但结转1 …

x86 assembly masm

-1
推荐指数
1
解决办法
74
查看次数

需要技术堆栈才能理解Git源代码

我有兴趣了解Git源代码,也许有一天会对它做出贡献.

我理解Git源代码是基于:

  1. 语言,如C,Shell,Perl,Python,C++,TCL

2)HTTP,HTTPS,SSH等技术

我只是想知道,还有什么是理解Git源代码的先决条件吗?

git

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