标签: arraylist

将map.values()返回的Collection转换为List

我已经尝试了我所知道的一切以及我在网上找到的任何东西,但它只是不起作用.我一直在:

java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为com.mycompany.myproject.dto.MyDto

如果有人能在下面的代码中告诉我我做错了什么,我将不胜感激:

List<Map<Long, MyDto>> dtoList = restTemplate.getForObject(myRestUrl + "/some-path/dtoInfo/" + ids, List.class);
Map<Long, MyDto> myMap = dtoList.get(0);
System.out.println("myMap SIZE is: " + myMap.size());
System.out.println("myMap is: " + myMap);

List<MyDto> dtos = new ArrayList<MyDto>(myMap.values());
StringJoiner sj = new StringJoiner(",");
for(MyDto obj : dtos) {
    sjStoreIds.add(obj.getId());
}
Run Code Online (Sandbox Code Playgroud)

REST调用返回一个List,其中包含一个HashMap对象,其中"Key"类型为Long,而"Value"类型为MyDto.然后我打印地图的"大小"和地图本身.两者都打印正确和预期的信息.

然后我从地图中提取值列表,如下所示:

List<MyDto> dtos = new ArrayList<MyDto>(myMap.values());
Run Code Online (Sandbox Code Playgroud)

没问题.

但是,当我尝试通过转换列表中的对象(dtos)时,如下所示:

for(MyDto obj : dtos) {
    sjStoreIds.add(obj.getId());
}
Run Code Online (Sandbox Code Playgroud)

我得到java.lang.ClassCastException:java.util.LinkedHashMap中不能被强制转换为com.mycompany.myproject.dto.MyDto用于为(MyDto OBJ:DTOS){一部分.

现在旋转我的大脑超过2个小时.:(

我相信它会变成一种非常基本的东西,一旦我知道它就会生气和尴尬,但有人可以告诉我我做错了吗?

编辑

以下是我在服务器端的REST实现: …

java collections arraylist hashmap

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

如何使用ListIterator?

我正在使用ArrayList的iterator:

List<String> al = new ArrayList<>();
// ----- Logic for adding elements-----
Iterator it = al.iterator();
// logic to retrieve elements----
Run Code Online (Sandbox Code Playgroud)

然后它尝试使用ListIterator,就像这样.

ListIterator li = al.listIterator();
    while(li.hasNext()) {
        System.out.print(li.next()+" ");
    }
Run Code Online (Sandbox Code Playgroud)

有效 ...

我试着这个用于反向检索

ListIterator li = al.listIterator();
while(li.hasPrevious()) {
        System.out.print(li.previous()+" ");
    }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

以下代码正常运行.

ListIterator<String> li = al.listIterator(al.size());
    while(li.hasPrevious()) {
        System.out.println(li.previous()+" ");
    }
Run Code Online (Sandbox Code Playgroud)

我想知道有一些泛型的概念,但不清楚它.请清除Iterator和ListIterator的概念.为什么ListIterator的一个语句正在运行另一个而不是?

java collections iterator arraylist listiterator

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

使用HashMap Iterator

我有两种方法来遍历包含键(String)和值(Arraylist)的哈希映射,并将Arraylists中的所有值添加到单个Arraylist中.

方法一不起作用,所以我创建了方法二,修复了问题,但我不确定为什么方法一不起作用.有人可以解释为什么方法二有效,方法一无效?

方法1

public ArrayList<Person> getPeopleList() 
{
    Iterator<ArrayList<Person>> iter = people.values().iterator();

    ArrayList<Person> allPersons = new ArrayList<>();
    while (iter.hasNext()) 
    {
        for (int i = 0; i < iter.next().size(); i++) 
        {
            allPersons.add(iter.next().get(i));
        }

    }
    return allPersons;
}
Run Code Online (Sandbox Code Playgroud)

方法2

public ArrayList<Person> getPeopleList() 
{
    Iterator<ArrayList<Person>> iter = people.values().iterator();

    ArrayList<Person> allPersons = new ArrayList<>();

    ArrayList<Person> persons;
    while (iter.hasNext()) 
    {
        persons = iter.next();
        for (Person p : persons) 
        {
            allPersons.add(p);
        }

    }
    return allPersons;
}
Run Code Online (Sandbox Code Playgroud)

java iterator arraylist hashmap

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

Java计算ArrayList中的字符串出现次数

我编写了一个程序,其中我有N个字符串和Q查询也是字符串.目标是确定每个查询在N个字符串中出现的次数.

这是我的代码:

import java.util.Scanner;
import java.util.ArrayList;

public class SparseArrays{


// count the number of occurances of a string in an array
int countStringOccurance(ArrayList<String> arr, String str){
    int count = 0;
    for (int i=0; i<arr.size(); i++) {
        if (str==arr.get(i)) {
            count += 1;
        }
    }
    return count;
}


void start(){
    // scanner object
    Scanner input = new Scanner(System.in);

    // ask for user to input num strings
    System.out.println("How many string would you like to enter?");
    // store the number of strings …
Run Code Online (Sandbox Code Playgroud)

java string arraylist

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

将int数组添加到2d ArrayList

谁知道如何添加int[] array到2d ArrayList<ArrayList<Integer>>?

代码...

import java.util.ArrayList;
import java.util.Arrays;

public class Test2 {
    public static void main(String[] args) {
        int[] intArray = {1,1,1,1};
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();

        list.add(new ArrayList<Integer>(Arrays.asList(intArray))); // <- compile error
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays arraylist

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

迭代所有列表但是一个特定值的最佳方法

我有一个枚举,我可以从Enum.values()中获取值,我需要遍历它们并对除了一个值之外的所有值起作用,我正在考虑两种避免对这个值进行排除的方法.第一个是创建值列表并删除我不需要的值,如下所示:

List<ObjectEnum> oList= new ArrayList<ObjectEnum>();
Collections.addAll(itinerarySortPriceCriteriaList,ItinerarySortPriceCriteria.values());
oList.remove(ObjectEnum.UNWANTED_ENUM_VALUE);
Run Code Online (Sandbox Code Playgroud)

然后迭代该列表并使用每个循环的公共对象进行操作.

我正在考虑的另一种方法是迭代所有ObjectEnum值并使用if跳过对我不想采取行动的行为,如下所示:

for (ObjectEnum o: ObjectEnum.values()) {
    if(!o.equals(ObjectEnum.UNWANTED_ENUM_VALUE)) {
       doThings();
    }
}
Run Code Online (Sandbox Code Playgroud)

你看到它们中的任何一个有什么优点,哪一个你觉得更具可读性?谢谢.

这是针对Java6每天生产20MM的请求.

java iteration enums loops arraylist

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

在lambda foreach表达式java 8中获取索引

我想从某个过滤器上的列表中删除对象,并且有多个对象.

list.stream().filter(g->g.getName().equalsIgnoreCase("String")).forEach(result ->{

            /* is it possible to get the index of the result here?
            .remove(), will iterate through the list again. I don't want that.
            */

            list.remove(result);
});
Run Code Online (Sandbox Code Playgroud)

java foreach lambda arraylist java-8

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

Java Arraylist同时更改所有对象中的一个属性值

我有一个具有此属性的模型

public class Audit extends BaseModel implements Comparable {
@Column
@PrimaryKey
@SerializedName("audit_id")
private int id;

@Column
@SerializedName("address_line_1")
private String addressLine1;

@Column
@SerializedName("address_line_2")
private String addressLine2;

@Column
@SerializedName("city_name")
private String city;

@Column
@SerializedName("zip_code")
private String zipcode;

@Column
@SerializedName("company_id")
private int companyId;

@Column
@SerializedName("company_name")
private String companyName;

@Column
@SerializedName("loc_name")
private String location;

@Column
@SerializedName("inspection_date_time")
private OffsetDateTime inspectionTime;

@Column
@SerializedName("inspection_number")
private String inspectionNumber;

@Column(defaultValue = "0")
private int auditStatus;

@Column(defaultValue = "0")
private int userId;

public int getId() {
    return id;
}

public …
Run Code Online (Sandbox Code Playgroud)

java arraylist

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

按价格属性对arraylist中的对象进行排序

我正在研究这个非常小的项目,我有一个汽车对象的arraylist,我试图按价格升序打印所有的汽车.当我环顾四周时,似乎每个人都使用数组而不是arraylist?

关于如何使用数组列表实现这一点的任何想法?以下是我的代码.

public ArrayList<Car> sortPriceAcending(ArrayList<Car> cars) {

    ArrayList<Car> sortedCars = new ArrayList<Car>();
    Car temp;

    for (int j = 0; j < cars.size() - 1; j++) {

        for (int i = 0; i < cars.size() - 1; i++) {
            Car car = (Car) cars.get(i);
            Car car1 = (Car) cars.get(i + 1);
            if (car.getPrice() > car1.getPrice()) {
                temp = car;
                cars.get(i) = cars.get(i + 1);
                cars.get(i + 1) = temp;
                sortedCars = cars;

            }
        }
    }
    return sortedCars;
}
Run Code Online (Sandbox Code Playgroud)

java arraylist

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

从arraylist中删除字符串

如果它不以13开头,我需要从数组列表中删除一个字符串.我已经在数据文件中读取并且每一行都作为字符串读入ArrayList.如果它不以13开头,则需要删除整行.下面显示了读入的数据文件的示例:

13 0 150801 00133990 04 04 1 078 2160 999 1 0 1 0 16 04 07 058 0320 061 0127 068 0546 033 0129 048 0586 042 0133 033
13 0 150801 00140480 04 04 1 086 1730 999 1 0 1 0 13 04 06 047 0309 039 0143 032 0772 017 0131 029 0140 037
13 0 150801 00141320 04 04 1 075 1660 999 1 0 1 0 13 03 06 053 0319 036 0132 …
Run Code Online (Sandbox Code Playgroud)

java string arraylist

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