从一组十进制数列表中获取数组列表中的父级值。

huangapple go评论68阅读模式
英文:

Get the parent values in the arraylist from a list of decimal numbers

问题

我有一个包含以下数值的ArrayList(数值可能会变化):

1
1.1
1.2
1.3
2
2.1
2.2
2.3
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
4
4.1
4.1.1
4.1.1.1
4.1.1.2
4.1.2
4.1.2.1
4.1.2.2
4.2
4.2.1
4.2.2
4.3
5
5.1

我需要在ArrayList中确定父级值,对于这种情况,ArrayList中的父级值如下:

1, 2, 3, 4, 4.1, 4.1.1, 4.1.2, 4.2, 5


例如,在此图片中,“父级值”(1、1.3)无法被选择,因为它们有子选项。

我在Android应用中有一个Spinner,并且我想要做类似的事情,即Spinner中只能隐藏或无法选择父级值。我不知道如何处理这个问题。

有任何想法吗?请提供帮助。
英文:

I have an arraylist with these values (the values can change):

1  
1.1
1.2
1.3
2  
2.1
2.2
2.3
3  
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
4  
4.1
4.1.1
4.1.1.1
4.1.1.2
4.1.2
4.1.2.1
4.1.2.2
4.2
4.2.1
4.2.2
4.3
5  
5.1

I need to identifiy the fathers value in an arraylist, for this case, the arraylist has this fathers values:

1, 2, 3, 4, 4.1, 4.1.1, 4.1.2, 4.2, 5

enter image description here

for example, in this picture the "fathers values" (1, 1.3) can't be selected, because it has child options.

I have an spinner in an android app, and I want to do something like that, the idea is in the spinner only parent values are hidden or cannot be selected. I don't have idea how can I do with this exercise.

Any idea? Please

答案1

得分: 1

请尝试以下代码:

List<String> list = List.of(
    "1", "1.1", "1.2", "1.3",
    "2", "2.1", "2.2", "2.3",
    "3", "3.1", "3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10",
    "4", "4.1", "4.1.1", "4.1.1.1", "4.1.1.2", "4.1.2", "4.1.2.1", "4.1.2.2", "4.2", "4.2.1", "4.2.2", "4.3",
    "5", "5.1");
Set<String> fathers = list.stream()
    .map(e -> e.replaceAll("\\.\\d+$", ""))
    .collect(Collectors.toCollection(LinkedHashSet::new));
System.out.println(fathers);

输出结果为:

[1, 2, 3, 4, 4.1, 4.1.1, 4.1.2, 4.2, 5]
英文:

Try this.

List&lt;String&gt; list = List.of(
    &quot;1&quot;, &quot;1.1&quot;, &quot;1.2&quot;, &quot;1.3&quot;,
    &quot;2&quot;, &quot;2.1&quot;, &quot;2.2&quot;, &quot;2.3&quot;,
    &quot;3&quot;, &quot;3.1&quot;, &quot;3.2&quot;, &quot;3.3&quot;, &quot;3.4&quot;, &quot;3.5&quot;, &quot;3.6&quot;, &quot;3.7&quot;, &quot;3.8&quot;, &quot;3.9&quot;, &quot;3.10&quot;,
    &quot;4&quot;, &quot;4.1&quot;, &quot;4.1.1&quot;, &quot;4.1.1.1&quot;, &quot;4.1.1.2&quot;, &quot;4.1.2&quot;, &quot;4.1.2.1&quot;, &quot;4.1.2.2&quot;, &quot;4.2&quot;, &quot;4.2.1&quot;, &quot;4.2.2&quot;, &quot;4.3&quot;,
    &quot;5&quot;, &quot;5.1&quot;);
Set&lt;String&gt; fathers = list.stream()
    .map(e -&gt; e.replaceAll(&quot;\\.\\d+$&quot;, &quot;&quot;))
    .collect(Collectors.toCollection(LinkedHashSet::new));
System.out.println(fathers);

output

[1, 2, 3, 4, 4.1, 4.1.1, 4.1.2, 4.2, 5]

huangapple
  • 本文由 发表于 2020年8月9日 13:32:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/63322824.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定