相关疑难解决方法(0)

Java中C++ Pair <L,R>的等价物是什么?

有没有一个很好的理由为什么Pair<L,R>Java中没有?这个C++构造的等价物是什么?我宁愿避免重新实现自己.

似乎1.6提供类似的东西(AbstractMap.SimpleEntry<K,V>),但这看起来很复杂.

java tuples std-pair

655
推荐指数
17
解决办法
45万
查看次数

价值对的Java集合?(元组?)

我喜欢Java有一个Map,你可以在其中定义地图中每个条目的类型<String, Integer>.

我正在寻找的是一种集合,其中集合中的每个元素都是一对值.对中的每个值都可以有自己的类型(如上面的String和Integer示例),它是在声明时定义的.

该集合将保持其给定的顺序,并且不会将其中一个值视为唯一键(如在地图中).

基本上我希望能够定义类型的ARRAY <String,Integer>或任何其他2种类型.

我意识到我可以创建一个只有2个变量的类,但这看起来过于冗长.

我也意识到我可以使用2D数组,但由于我需要使用不同的类型,我必须使它们成为OBJECT数组,然后我必须一直投射.

我只需要在集合中存储对,所以每个条目只需要两个值.如果没有上课路线,这样的事情会存在吗?谢谢!

java

326
推荐指数
14
解决办法
47万
查看次数

Java SE 8是否有Pairs或Tuples?

我正在玩Java SE 8中的惰性函数操作,我想要一个对/元组map的索引,然后基于第二个元素,最后只输出索引.i(i, value[i])filtervalue[i]

我是否仍然要忍受这个问题:Java中的C++ Pair <L,R>相当于什么?在lambdas和溪流的大胆新时代?

更新:我提供了一个相当简化的示例,其中有一个由@dkatzel提供的简洁解决方案,其中一个答案如下.但是,它没有概括.因此,让我添加一个更一般的例子:

package com.example.test;

import java.util.ArrayList;
import java.util.stream.IntStream;

public class Main {

  public static void main(String[] args) {
    boolean [][] directed_acyclic_graph = new boolean[][]{
        {false,  true, false,  true, false,  true},
        {false, false, false,  true, false,  true},
        {false, false, false,  true, false,  true},
        {false, false, false, false, false,  true},
        {false, false, false, false, false,  true},
        {false, false, false, false, false, false}
    };

    System.out.println(
        IntStream.range(0, …
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8 java-stream

174
推荐指数
8
解决办法
19万
查看次数

是否有Java等效的Python'枚举'函数?

在Python中,该enumerate函数允许您迭代一系列(索引,值)对.例如:

>>> numbers = ["zero", "one", "two"]
>>> for i, s in enumerate(numbers):
...     print i, s
... 
0 zero
1 one
2 two
Run Code Online (Sandbox Code Playgroud)

有没有办法在Java中这样做?

python java iterator

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

Java N-Tuple实现

我刚刚创建了一个类型安全的Java n-tuple.
我正在使用一些非传统的方法来实现类型安全(我只是为了好玩).

有人可以就改进它或一些可能的缺陷提供一些意见.

public class Tuple {
    private Object[] arr;
    private int size;
    private static boolean TypeLock = false;
    private static Object[] lastTuple = {1,1,1}; //default tuple type

    private Tuple(Object ... c) {
        // TODO Auto-generated constructor stub
        size=c.length;
        arr=c;
        if(TypeLock)
        {
            if(c.length == lastTuple.length)
                for(int i = 0; i<c.length; i++)
                {
                    if(c[i].getClass() == lastTuple[i].getClass())
                        continue;
                    else
                        throw new RuntimeException("Type Locked");
                }
            else
                throw new RuntimeException("Type Locked");
        }

        lastTuple = this.arr;
    }

    public static void setTypeLock(boolean typeLock) {
        TypeLock …
Run Code Online (Sandbox Code Playgroud)

java tuples type-safety

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

HashMap如何只包含一个条目/对象?

我想HashMap只有一个键值对象.

我创建了以下内容HashMap:

    HashMap <Integer,String>DocsCollection = new HashMap <Integer,String>();
Run Code Online (Sandbox Code Playgroud)

在HashMap中,我想只有一个条目/对象.密钥类型是Integer.值类型是String.

例如= <1,"foo.txt">

每当我在文件中找到特定单词时,我都希望这样

  1. 增加键中的计数器

  2. 在值中添加新文件

例如,比方说,我在一家搜索单词"你好" DocsCollection,我要存储单词"你好"一词频率的每一次出场并连接所有的新文件到以前的值.

<3, "foo.txt的,hello.txt的,的test.txt">

3意味着我在三个文件中找到了"Hello"这个词.

并且Value由找到单词的文件组成

如果我使用方法put,则会在HashMap密钥更改的原因中创建一个新条目.它不稳定.它以"1"开头,但是当我第二次找到该字时,键增加然后put方法插入一个带有新键的新条目但是我想只有一个条目并修改密钥.可以这样做吗?我怎样才能在HashMap中只有一个对象并且每次都修改密钥?

   DocsCollection.put(2,"foo.txt,hello.txt"); 
Run Code Online (Sandbox Code Playgroud)

提前致谢

java hashmap

12
推荐指数
3
解决办法
3万
查看次数

在java中存储数字对

如何在java中存储一组配对数字?我是使用列表或数组还是其他东西?

例如.[(1,1),(2,1),(3,5)]

java

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

Java有与C#的元组等效的变量类型吗?

我正在将程序从C#转换为Java.在C#代码中,开发人员使用Tuple.我需要将这个C#代码翻译成Java代码.因此,Java是否具有与C#的元组等效的变量类型?

.net c# java tuples

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

简单的方法在java中创建元组?

有没有一种简单的方法在java中创建一个2元素元组?我正在考虑创建一个类并将变量声明为final.这会有用吗?

java tuples

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

Java中的三元组

可能重复:
Java是否需要元组?

Java是否支持三元组或至少对?Java是否支持元组?我试图找到一种方法来制作一个列表,使其具有一个三元组,其初始点为第一个,终点为终点,中间距离为.但是,我似乎无法找到任何相关信息.

java tuples triples

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

证明mergesort是稳定的

我写了一个mergesort算法.当我运行以下测试时:

public static void main(String[] args){
    Integer[] arr = {3,7,9,11,0,-5,2,5,8,8,1};
    List<Integer> list = new ArrayList<>();
    list.addAll(Arrays.asList(arr)); // asList() returns fixed size list, so can't pass to mergesort()
    List<Integer> result = mergesort(list);
    System.out.println(result);
  }
Run Code Online (Sandbox Code Playgroud)

我知道[-5, 0, 1, 2, 3, 5, 7, 8, 8, 9, 11],这是正确的.但是,我知道mergesort是一个稳定的类型,所以我怎么能编写一个测试来证明这两个8是按照它们原来的顺序?

编辑:因为我使用了Integer类,而不是原始的int,我想我可以得到hashCode()自从Integer扩展基Object类.

但是,当我尝试

Integer[] arr = {3,7,9,11,0,-5,2,5,8,8,1};
System.out.println(arr[8].hashCode());
System.out.println(arr[9].hashCode());
Run Code Online (Sandbox Code Playgroud)

我只得到:

8
8
Run Code Online (Sandbox Code Playgroud)

java sorting mergesort

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

从Java方法返回多个变量

抱歉愚蠢的问题......任何人都可以帮我从方法中返回两个变量(我在这里阅读 并尝试重新编码,但没有结果).

public class FileQualityChecker {
    EnviroVars vars = new EnviroVars();  
    public int n = 0;
    public int z = 0;
    public int m = 0;
    String stringStatus;


    public void stringLenghtCheck(String pathToCheckedFile)
    {
        try{    
    FileInputStream fstream = new          FileInputStream(pathToCheckedFile+"\\"+"Test.dat");
         // Get the object of DataInputStream
         DataInputStream in = new DataInputStream(fstream);
         BufferedReader br = new BufferedReader(new InputStreamReader(in));
         String strLine;
          //Read File Line By Line
         while ((strLine = br.readLine()) != null)   
         {

           if  (
           strLine.length() == vars.strLenghtH ||
           strLine.length() == …
Run Code Online (Sandbox Code Playgroud)

java methods return

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