【问题标题】:How do I generate a list in java?如何在java中生成列表?
【发布时间】:2017-10-30 08:44:10
【问题描述】:

我正在尝试建立一个网站,该网站本质上是 6 弦吉他的备用调音数据库。我真正想做的第一件事就是把调音列表放在一起。

我的常量:

1.) 六个字符串

2.) 最低音可能是标准调弦的完美 4 度音(低 e 变为 b,弦变为 e,d 弦变为 g,等等)。

3.) 高音(目前)是大三度 高于 标准调弦(低 e 变成 g#,弦变成 c#,d 弦变成 f#,等等)。

4.) 这意味着每个弦有 10 个可能的音符范围,其中一些会重叠(例如,在低 e 和弦之间:e、f、f#、g、g#)

因此,鉴于这些信息,我正在尝试构建 ALL 可能排列的列表。

我尝试过使用 python 的 itertools,但我的笔记本电脑不能很好地处理计算。所以我想也许java会有一些更有用的内置函数。

谁能帮帮我?我是一个非常业余的编码员,所以任何帮助都会很棒。

谢谢

编辑:这是我目前的代码:

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

public class TuningList{
   public static void main(String[] args){

   List<String> string6 = Arrays.asList("B1", "C2", "C#2/Db2", "D2", "D#2/Eb2", "E2", "F2", "F#2/Gb2", "G2", "G#2/Ab2");
  List<String> string5 = Arrays.asList("E2", "F2", "F#2/Gb2", "G2", "G#2/Ab2", "A2", "A#2/Bb2", "B2", "C3", "C#3/Db3");
  List<String> string4 = Arrays.asList("A2", "A#2/Bb2", "B2", "C3", "C#3/Db3", "D3", "D#3/Eb3", "E3", "F3", "F#3/Gb3");
  List<String> string3 = Arrays.asList("D3", "D#3/Eb3", "E3", "F3", "F#3/Gb3", "G3", "G#3/Ab3", "A3", "A#3/Bb3", "B3");
  List<String> string2 = Arrays.asList("F#3/Gb3", "G3", "G#3/Ab3", "A3", "A#3/Bb3", "B3", "C4", "C#4/Db4", "D4", "D#4/Eb4");
  List<String> string1 = Arrays.asList("B3", "C4", "C#4/Db4", "D4", "D#4/Eb4", "E4", "F4", "F#4/Gb4", "G4", "G#4/Ab4");
}

【问题讨论】:

  • 所有可能的排列?这要求有很多不和谐。
  • “构建所有可能排列的列表”是一个常见的新手陷阱。遍历任何事物的所有可能排列几乎不是一个好主意,在您真正想要这样做的情况下,按需生成排列几乎总是比预先构建整个列表更好。
  • “所有可能的排列?这要求很多不和谐”是的,我知道!这就是重点哈哈! “一个常见的新手陷阱”我不怀疑。但有可能吗?
  • 您可以阅读有关herehere 的类似问题。他们应该让您了解开始。

标签: java python arraylist itertools


【解决方案1】:

如果我正确理解您想将标准调弦从 -4 音调变为 +3 音调。

这是一个 Javascript 示例。

$ cat /tmp/strings.js

var notes = [ 'a', 'a#', 'b', 'c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#' ];
var standardTuning = [ 'e', 'b', 'g', 'd', 'a', 'e' ];

for ( var i = -7; i < 5; i++ )  {
  var shiftedTuning = [];

  standardTuning.forEach( function (e) {
    var idx = notes.indexOf( e );
    idx = (notes.length +  idx + i ) % notes.length;
    shiftedTuning.push( notes [idx ]);
  })
  console.log(shiftedTuning);
}

$ node /tmp/strings.js

[ 'a', 'e', 'c', 'g', 'd', 'a' ]
[ 'a#', 'f', 'c#', 'g#', 'd#', 'a#' ]
[ 'b', 'f#', 'd', 'a', 'e', 'b' ]
[ 'c', 'g', 'd#', 'a#', 'f', 'c' ]
[ 'c#', 'g#', 'e', 'b', 'f#', 'c#' ]
[ 'd', 'a', 'f', 'c', 'g', 'd' ]
[ 'd#', 'a#', 'f#', 'c#', 'g#', 'd#' ]
[ 'e', 'b', 'g', 'd', 'a', 'e' ]
[ 'f', 'c', 'g#', 'd#', 'a#', 'f' ]
[ 'f#', 'c#', 'a', 'e', 'b', 'f#' ]
[ 'g', 'd', 'a#', 'f', 'c', 'g' ]
[ 'g#', 'd#', 'b', 'f#', 'c#', 'g#' ]

【讨论】:

  • 我更新了我的帖子以显示一些代码,如果有帮助的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多