从列表<pair <字符串,字符串>>创建列表<字符串>

时间:2018-11-08 14:02:06

标签: java arraylist collections java-8

我有完整的清单:

List<Pair<String,String>> List = new ArrayList<>();

我想注入第一个元素(字符串)并为其创建新的简单列表:

List<String> localtNameList

如何使用 first 字符串将List<Pair<String,String>>数组转换为普通List <String>

对伊朗的回答

在我的模型中,我有:

public List<Pair<String,String>> getArtistsWithPhoto ()
{
    List<Pair<String,String>> perfectMapNameAndFoto = new ArrayList<>() ;

    if (ituneResult.getListSongs() != null){
        for (ResultiTune item : ituneResult.getListSongs() ){

            perfectMapNameAndFoto.add(new Pair <String,String> (item.getArtistName(),item.getArtworkUrl100() ));
        }
    }
    if(lastFmResult.getResults().getArtistmatches().getListOfLatsFmArtists() != null) {
        for (ArtistLastFm item : lastFmResult.getResults().getArtistmatches().getListOfLatsFmArtists())
            perfectMapNameAndFoto.add(new Pair<String, String>(item.getName(), item.getUrl()));
    }
    return perfectMapNameAndFoto;

}

并在我的适配器中: 通过实现:'com.annimon:stream:1.2.1'

List<String> localArtistNameList = Stream.of(list).map(Pair::getFirst).collect(Collectors.toList());

埃里克的解决方案

Android版本Pair Class没有Eric提到的getFirst,所以解决方法是:

p -> p.first

最终工作代码:

Stream.of(list).map(p -> p.first).collect(Collectors.toList());

如果有人想在Android

在Gradle中:

implementation 'com.annimon:stream:1.2.1'

1 个答案:

答案 0 :(得分:2)

您可以使用Stream

List<String> localtNameList = list.stream().map(Pair::getFirst).collect(Collectors.toList());

这是假设Pair有一个getFirst方法返回第一个元素。